试图调试一些似乎返回笛卡尔积的连接,我将等效的ON条件键入选择.
在MySQL中
select * from table where columnname
好像我输入了columname不为null的行为.在连接中,在table.columnname上键入,但返回很多行.如果我在table1.column = table2.column上更正它,MysqL会做正确的事情但肯定我的第一个版本是不正确和非法的.
解决方法
您正在讨论的上下文,连接中的WHERE子句和ON子句只接受表达式.
SELECT ... FROM table1 JOIN table2 ON <expr> WHERE <expr>
表达式可以包括比较运算符,例如=但表达式也可以像单个列或单个常量值一样简单.
与另一个接受表达式的上下文比较:select-list.
SELECT <expr>,<expr>,<expr>
在此上下文中使用单个列作为表达式是正常的.