Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用外部连接的MySQL语句与使用何处设置条件的MySQL语句_Mysql - Fatal编程技术网

使用外部连接的MySQL语句与使用何处设置条件的MySQL语句

使用外部连接的MySQL语句与使用何处设置条件的MySQL语句,mysql,Mysql,对于具有内部联接的语句: 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在第二条语句中设置条件 问题:我可以使用何处设置任何外部(左/右)连

对于具有
内部联接的语句

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
在第二条语句中设置条件


问题:我可以使用何处设置任何外部(左/右)连接语句的条件来编写等效语句吗

我不是MYSQL专家,但在oracle中,where条件中外部联接的语法是where t1.id+=t2.id

我不是MYSQL专家,但在oracle中,where条件中外部联接的语法是where t1.id+=t2.id

来自:

SELECT ...
    FROM table1 t1
    RIGHT OUTER JOIN table2 t2 ON (t1.x = t2.y AND somecondition)
在没有连接条件的情况下,内部连接和(逗号)在语义上是等价的 对我来说,逗号意味着一个内部连接

我建议您使用ANSI join语法以提高清晰度和可移植性。

来自:

在没有连接条件的情况下,内部连接和(逗号)在语义上是等价的 对我来说,逗号意味着一个内部连接

我建议您使用ANSI join语法以提高清晰度和可移植性

我可以使用WHERE为任何外部(左/右)连接语句设置条件来编写等效语句吗

不,不是在ANSI SQL或MySQL中。在接受ANSI JOIN语法之前,其他一些数据库有自己的语法。例如,在Oracle 8中:

WHERE table1.id=table2.thing (+)
但是今天,对于这两种连接,ANSI连接语法通常应该是首选的

我可以使用WHERE为任何外部(左/右)连接语句设置条件来编写等效语句吗

不,不是在ANSI SQL或MySQL中。在接受ANSI JOIN语法之前,其他一些数据库有自己的语法。例如,在Oracle 8中:

WHERE table1.id=table2.thing (+)

但是今天,对于这两种联接,ANSI联接语法通常都是首选的。

在Sybase中,您可以使用
表1.field1
=
表2.field1
(左外)=右外

在Sybase中,您可以使用
表1.field1
=
表2.field1
(左外)=右外)