这是一个有效的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)?

下一篇: compressor: CSS images with path relative to folder