这是一个有效的SQL条件表达式或MySQL错误(功能)?
试图调试一些似乎返回笛卡尔积的连接,我将等价的ON条件输入到选择中。
在MySQL中
select *
from table
where columnname
似乎表现得好像我键入where columname is not null
。 在连接上键入on table.columnname
被接受,但返回LOTS的行。 如果我将它更正为on table1.column=table2.column
MySQL会做正确的事情,但肯定是我的第一个版本不正确且非法。
您正在讨论的上下文, WHERE
子句和ON
子句只是接受一个表达式。
SELECT ...
FROM table1 JOIN table2 ON <expr>
WHERE <expr>
表达式可以包含像=
这样的比较运算符,但表达式也可以像单列或单个常量一样简单。
与接受表达式的另一个上下文进行比较:选择列表。
SELECT <expr>, <expr>, <expr>
在此上下文中使用单个列作为表达式是正常的。
大多数编程语言都认为除null,0,','以外的所有值都为真。 而(1); 无论你是否给1,2,'a',真等等,都是一个无限循环。 我会说它是一个默认的预期行为,我经常使用类似的where子句
链接地址: http://www.djcxy.com/p/12279.html上一篇: Is this a valid SQL conditional expression or a MySQL bug (feature)?