Ale*_* T. 90 mysql join inner-join left-join right-join
是否可以在没有ON
语句的情况下编写连接查询?以及这些联接如何LEFT JOIN, RIGHT JOIN
起作用.
Gor*_*off 126
MySQL 文档涵盖了此主题.
这是一个概要.使用join
或时inner join
,on
条件是可选的.这与ANSI标准不同,与几乎任何其他数据库都不同.效果是一个cross join
.同样,您可以使用带有的on
子句cross join
,它也与标准SQL不同.
交叉连接创建笛卡尔积 - 也就是说,第一个表中的1行和第二个表中的1行的每个可能组合.具有三行('a','b'和'c')的表和具有四行(例如1,2,3,4)的表的交叉连接将具有12行.
实际上,如果要进行交叉连接,请使用cross join
:
from A cross join B
Run Code Online (Sandbox Code Playgroud)
比以下更好:
from A, B
Run Code Online (Sandbox Code Playgroud)
和:
from A join B -- with no on clause
Run Code Online (Sandbox Code Playgroud)
on
右边或左外连接需要该子句,因此讨论与它们无关.
如果您需要了解不同类型的连接,那么您需要对关系数据库进行一些研究.Stackoverflow不适合该级别的讨论.
请参阅http://www.sitepoint.com/understanding-sql-joins-mysql-database/中的一些示例
您可以在查询中使用"USING"而不是"ON"
SELECT * FROM table1 LEFT JOIN table2 USING (id);
Run Code Online (Sandbox Code Playgroud)
有多种方法可以进行交叉连接或笛卡尔积:
SELECT column_names FROM table1 CROSS JOIN table2;
SELECT column_names FROM table1, table2;
SELECT column_names FROM table1 JOIN table2;
忽略on
第三种情况中的条件会导致交叉连接。
归档时间: |
|
查看次数: |
116530 次 |
最近记录: |