我正在为别人的代码而苦苦挣扎。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.id
。列表中的所有t2
with行都连接到that has of one 的行;的所有其他行都与具有零的行连接。这是sqlfiddle.com上的一个小演示:链接。id
IN
t1
id
t2
t1
id
然而,很难想象这是作者的意图:我认为更可能的检查是两个项目都在列表中,并且彼此相等。彼此相等很重要,因为看起来作者想要连接这两个表。
一种更现代的连接方式是使用 ANSI SQL 语法。这是您在 ANSI SQL 中的查询的等价物:
SELECT * FROM t1 JOIN t2 ON t1.id = t2.id IN (1,2,3)