MySQL语句使用OUTER JOIN与使用WHERE设置条件

时间:2009-09-17 12:00:18

标签: mysql

对于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语句设置条件?

5 个答案:

答案 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(左外)= 右外