SELECT * FROM left_table OUTER JOIN right_table on left_table.name = righ
t_table.name;
SELECT * FROM left_table FULL OUTER JOIN right_table on left_table.name =
right_table.name;
这2个语句给出了下面的错误。它们不是有效的mysql语句吗?Mysql加入澄清
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'OUTER
JOIN right_table on left_table.name = right_table.name' at line 1
mysql> SELECT * FROM left_table RIGHT OUTER JOIN right_table on left_table.name
= right_table.name;
和
mysql> SELECT * FROM left_table RIGHT JOIN right_table on left_table.name
= right_table.name;
给予同样的结果。那么添加OUTER语句的基本用法是什么?
我想知道它是什么特殊的目的,通过添加OUTER语句中,而不添加它也返回相同的输出。
---- ----更新
好吧,我把我的表结构
mysql> select * from left_table;
+----+---------+
| id | name |
+----+---------+
| 1 | Pirate |
| 2 | money |
| 5 | Ninja |
| 6 | pradeep |
+----+---------+
和
mysql> select * from right_table;
+----+-------------+
| id | name |
+----+-------------+
| 1 | Rutabaga |
| 2 | Pirate |
| 3 | Darth Vader |
| 4 | Ninja |
+----+-------------+
我跑了之类的语句
mysql> SELECT * FROM left_table LEFT JOIN right_table on left_table.name = right
_table.name where right_table.id is NULL;
+----+---------+------+------+
| id | name | id | name |
+----+---------+------+------+
| 2 | money | NULL | NULL |
| 6 | pradeep | NULL | NULL |
+----+---------+------+------+
和
mysql> SELECT * FROM left_table LEFT OUTER JOIN right_table on left_table.name =
right_table.name where right_table.id is NULL;
+----+---------+------+------+
| id | name | id | name |
+----+---------+------+------+
| 2 | money | NULL | NULL |
| 6 | pradeep | NULL | NULL |
+----+---------+------+------+
它们仍然产生相同的输出。如果有的话1可以显示一些结果会有所不同的声明。我将能够理解它。
[SQL Server中的左连接和左外连接]的可能重复(http://stackoverflow.com/questions/406294/left-join-and-left-outer-join-in-sql-server) – Niels
This不是重复的。这是一个MySQL特有的问题。 –
也许这会帮助你http://www.xaprb.com/blog/2006/05/26/how-to-write-full-outer-join-in-mysql/ – AllisonC