对于INNER JOIN
的声明:
SELECT column(s) FROM table1
INNER JOIN table2 ON condition(s)
...
INNER JOIN tableN ON condition(s);
我可以用这个写一个等价的陈述:
SELECT column(s) FROM table1, table2, ..., tableN WHERE condition(s);
注意我如何使用WHERE
在第二个语句中设置条件。
问题:我是否可以使用WHERE编写等效语句来为任何OUTER(LEFT / RIGHT)JOIN语句设置条件?
答案 0 :(得分:3)
我可以使用WHERE编写等效语句来为任何OUTER(LEFT / RIGHT)JOIN语句设置条件吗?
不,不是ANSI SQL或MySQL。其他一些数据库有自己的语法,在接受ANSI JOIN语法之前使用。例如在Oracle 8中:
WHERE table1.id=table2.thing (+)
但是今天ANSI JOIN语法通常应该是两种联接的首选。
答案 1 :(得分:1)
我不是MYSQL专家,但在oracle中,where where条件中的外连接的语法是t1.id + = t2.id
答案 2 :(得分:0)
我想:
选择...... FROM table1 t1 RIGHT OUTER JOIN table2 t2 ON(t1.x = t2.y AND somecondition)
答案 3 :(得分:0)
来自MySQL 5.0 Reference Manual :
“在没有连接条件的情况下,INNER JOIN和(逗号)在语义上是等效的” 所以对我来说,这会读到一个逗号意味着内部联接。
我建议您使用ANSI连接语法以获得更高的清晰度和可移植性。
答案 4 :(得分:0)
在sybase中你可以使用table1.field1 = table2.field1(左外)= 右外