首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否会先执行括号内的所有内容?

是否会先执行括号内的所有内容?
EN

Stack Overflow用户
提问于 2016-05-27 15:17:45
回答 2查看 88关注 0票数 0

我有这样的疑问:

代码语言:javascript
复制
IF ( FALSE AND (SELECT 1 FROM mytable WHERE id = :id) ) THEN

    /* INSERT something here */

ENDIF;

我想知道的是,是否执行处于这种状态的SELECT语句?

如您所知,INSERT语句永远不会运行,因为条件中有FALSEAND,所以条件总是FALSE

现在我只想知道SELECTIF-statement之前执行吗?我要说的是,因为我听说了括号中的所有内容都将首先在MySQL中执行。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-27 15:41:56

文档(MySQL ::13.3.1算子优先)没有这么说,但似乎是短路了.有必要确认这一信息。

MariaDB给出了更多细节:MariaDB ::操作员优先::短路评估

示例:

代码语言:javascript
复制
mysql> SET @`out` := 1;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT (FALSE AND (SELECT @`out` := 0));
+----------------------------------+
| (FALSE AND (SELECT @`out` := 0)) |
+----------------------------------+
|                                0 |
+----------------------------------+
1 row in set (0.00 sec)

mysql> SELECT @`out`;
+--------+
| @`out` |
+--------+
|      1 | -- <-- Not change
+--------+
1 row in set (0.00 sec)

mysql> SELECT (TRUE AND (SELECT @`out` := 0));
+---------------------------------+
| (TRUE AND (SELECT @`out` := 0)) |
+---------------------------------+
|                               0 |
+---------------------------------+
1 row in set (0.00 sec)

mysql> SELECT @`out`;
+--------+
| @`out` |
+--------+
|      0 | -- <-- Change
+--------+
1 row in set (0.00 sec)

更新

代码语言:javascript
复制
mysql> SET @`out` := 0;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT (TRUE AND (SELECT @`out` := 1) AND FALSE);
+-------------------------------------------+
| (TRUE AND (SELECT @`out` := 1) AND FALSE) |
+-------------------------------------------+
|                                         0 |
+-------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT @`out`;
+--------+
| @`out` |
+--------+
|      1 | -- <-- Change
+--------+
1 row in set (0.00 sec)
票数 1
EN

Stack Overflow用户

发布于 2016-05-27 15:22:31

关于你的代码:它会做你想做的事情。它将执行SELECT,然后计算链接到IF的条件。

这种行为在许多编程语言中是常见的。有疑问时,使用括号。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37487051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档