需要在SQL中明确JOIN的概念

时间:2017-08-21 23:40:06

标签: mysql sql join natural-join

因此,我们在SQL中遇到的各种类型的连接是:

1.JOIN

2.NATURAL JOIN

3.INNER JOIN

4.OUTER JOIN(左,右,全)

5.CROSS JOIN

我需要清楚地了解JOIN,NATURAL JOIN和CROSS JOIN之间的区别

在w3schools.com上,我使用了JOIN和NATURAL JOIN查询,得到了以下结果

1.Query for JOIN。

SELECT *
FROM Orders
JOIN Customers;

Output of the JOIN query(Postal Code and Country Column can't be seen but they're there)

2.查询NATURAL JOIN。

SELECT *
FROM Orders
NATURAL JOIN Customers;

Output of Natural Join

我是初学者,我对JOIN和NATURAL JOIN关键字的概念并不清楚,因为互联网上的资料不够,或者如果不清楚我在这两个关键字之间的混淆。

我无法理解为什么2个关键字提取的记录数量如此不同。请深入解释这里发生的事情。提前谢谢。

1 个答案:

答案 0 :(得分:0)

JOIN

SRC_URI += '$(DEPLOY_DIR}/qt5-image-raspberrypi2.tar.xz'

结果

SELECT *
  FROM orders o
  JOIN customers c
    ON o.customerid = c.customerid

在NATURAL JOIN中避免重复列

天然加入

orderid, orderdate,  customerid, customerid, customername
10248,   1996-04-07, 1,          1,          Alfreds Futterkitse
10248,   1996-04-07, 2,          2,          Ana Trujillo
10248,   1996-04-07, 3,          3,          Antonio Moreno
10248,   1996-04-07, 4,          4,          Around the Horn
10248,   1996-04-07, 5,          5,          Berglunds snabbkop

结果

 SELECT *
   FROM orders o
NATURAL JOIN customers c

由于您选择了*,订单中的customerid和客户都将显示在JOIN中,但在NATURAL JOIN中,它只会显示一个customerid列。