1

我正在为别人的代码而苦苦挣扎。WHERE 子句在以下 (MySQL) 语句中可以做什么?

    SELECT * FROM t1, t2 WHERE t1.id = t2.id IN (1,2,3)

在我的情况下,它没有提供所需的结果,但我试图弄清楚原作者的意图。任何人都可以提供使用这样的 WHERE 子句的示例吗?

4

1 回答 1

4

此条件从右侧开始,计算t2.id IN (1,2,3),得到结果(0 或 1),并将其用于与 连接t1.id。列表中的所有t2with行都连接到that has of one 的行;的所有其他行都与具有零的行连接。这是sqlfiddle.com上的一个小演示:链接idINt1idt2t1id

然而,很难想象这是作者的意图:我认为更可能的检查是两个项目都在列表中,并且彼此相等。彼此相等很重要,因为看起来作者想要连接这两个表。

一种更现代的连接方式是使用 ANSI SQL 语法。这是您在 ANSI SQL 中的查询的等价物:

SELECT * FROM t1 JOIN t2 ON t1.id = t2.id IN (1,2,3)
于 2013-01-04T05:42:53.557 回答