我正在与别人的代码挣扎。 WHERE子句在以下(MySQL)语句中可能做什么?
SELECT * FROM t1, t2 WHERE t1.id = t2.id IN (1,2,3)
它并没有在我的案例中提供所需的结果,但我想弄清楚原作者的意图。 任何人都可以提供像这样使用WHERE子句的例子吗?
答案 0 :(得分:4)
此条件从右侧开始,评估t2.id IN (1,2,3)
,获取结果(0或1),并将其用于与t1.id
的联接。来自t2
列表的id
IN
的所有行都会加入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)