SQL“IN”与WHERE子句中的“=”结合使用

时间:2013-01-04 05:35:51

标签: mysql sql

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

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

它并没有在我的案例中提供所需的结果,但我想弄清楚原作者的意图。 任何人都可以提供像这样使用WHERE子句的例子吗?

1 个答案:

答案 0 :(得分:4)

此条件从右侧开始,评估t2.id IN (1,2,3),获取结果(0或1),并将其用于与t1.id的联接。来自t2列表的id IN的所有行都会加入t1id的行; t2的所有其他行都与t1id为零的行相连接。以下是sqlfiddle.com上的小型演示:link

很难想象这是作者的意图,但是:我认为更有可能检查两个项目是否在列表中,并且彼此相等。相互之间的平等很重要,因为看起来作者想要加入这两个表。

更现代的连接方式是使用ANSI SQL语法。这与ANSI SQL中的查询等效:

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