我正在为别人的代码而苦苦挣扎。 WHERE 子句在以下 (MySQL) 语句中可能做什么?
SELECT * FROM t1, t2 WHERE t1.id = t2.id IN (1,2,3)
在我的案例中,它没有提供预期的结果,但我试图弄清楚原作者的意图。 任何人都可以提供使用这样的 WHERE 子句的示例吗?
最佳答案
此条件从右开始,评估 t2.id IN (1,2,3)
,获取结果(0 或 1),并将其用于与 t1 的连接。编号
。 IN
列表中具有 id
的 t2
的所有行都连接到 t1
中具有 的行id
之一; t2
的所有其他行都与 t1
中 id
为零的行连接。这是关于 sqlfiddle.com 的一个小演示: link .
很难想象这是作者的意图,但是:我认为更可能的检查是两个项目都在列表中,并且彼此相等。彼此相等很重要,因为看起来作者想要连接这两个表。
一种更现代的连接方式是使用 ANSI SQL 语法。这是您在 ANSI SQL 中的等效查询:
SELECT * FROM t1 JOIN t2 ON t1.id = t2.id IN (1,2,3)
关于mysql - SQL "IN"与 WHERE 子句中的 "="组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14151631/