【发布时间】:2016-11-08 03:39:21
【问题描述】:
我偶然发现了 MySQL 中的以下(有效)查询(在将 = 替换为 IN 时也适用于 Oracle/MSSQL):
SELECT * from mytable WHERE (a, b)=(1,2)
和这个一样
SELECT * from mytable WHERE a=1 and b=2
我认为MySQL docs中的定义在这里:
simple_expr:
[...]
| (expr [, expr] ...)
[...]
这叫什么?使用它有什么优缺点吗?
【问题讨论】:
-
优点。少打字。缺点。我认为不能使用索引 - 但我不确定 - 虽然很容易验证
-
在第一次测试中
EXPLAIN告诉我两个查询中使用了相同的索引,似乎这里没有区别 -
如果 where 子句更复杂,我认为第一种语法不太清楚
-
ANSI SQL 功能 641,“行和表构造函数”。 (据developer.mimer.com/validator/parser200x/index.tml)
-
它对子查询非常有用,例如
WHERE (a,b) IN (SELECT c,d FROM T)
标签: mysql sql sql-server oracle