当前位置:Gxlcms > mysql > sqljoinon关联查询语句用法

sqljoinon关联查询语句用法

时间:2021-07-01 10:21:17 帮助过:38人阅读

sql join 包括很多种查询如内连,外连outer 这些在用法上大致相同,但是相出来的结果既不同,下面我们来看看这些实例吧。

加入是用来从多个表中的行结合起来。每当在一个SQL语句的FROM子句中列出的两个或多个表进行联接。

有不同类型的联接。让我们看看几个例子。

内部联接(简单的加入)
机会是,你已经写了一个SQL语句,使用一个内部联接。这是最常见的类型,加入。内部联接满足联接条件的多个表返回所有行。

代码如下

SELECT suppliers.supplier_id, suppliers.supplier_name, orders.order_date
FROM suppliers, orders
WHERE suppliers.supplier_id = orders.supplier_id;


这条SQL语句将返回从那里是一个匹配的供应商和订单表supplier_id价值的供应商和订单表的所有行。

让我们看看一些数据解释工作的内在联结如何:

我们有两个领域的供应商(supplier_id和supplier_名称)表。
它包含以下数据:

supplier_id supplier_name
10000 IBM
10001 Hewlett Packard
10002 Microsoft
10003 NVIDIA

We have another table called orders with three fields (order_id, supplier_id, and order_date).
It contains the following data:

order_id supplier_id order_date
500125 10000 2003/05/12
500126 10001 2003/05/13

运行如下代码

代码如下

SELECT suppliers.supplier_id, suppliers.supplier_name, orders.order_date
FROM suppliers, orders
WHERE suppliers.supplier_id = orders.supplier_id;

结果

supplier_id name order_date
10000 IBM 2003/05/12
10001 Hewlett Packard 2003/05/13

Outer Join
先看一个实例

代码如下

suppliers.supplier_id, suppliers.supplier_name, orders.order_date
from suppliers, orders
where suppliers.supplier_id = orders.supplier_id(+);

这条SQL语句将返回所有行从供应商表,并只有那些从订单表中的行的联接字段相等。

(+),后orders.supplier_id场表示,如果在供应商的表supplier_id价值不存在订单表,订单表中的各个领域将作为显示的结果集。

上面的SQL语句也可以写成如下形式:

代码如下

select suppliers.supplier_id, suppliers.supplier_name, orders.order_date
from suppliers, orders
where orders.supplier_id(+) = suppliers.supplier_id


看看结果

supplier_id supplier_name
10000 IBM
10001 Hewlett Packard
10002 Microsoft
10003 NVIDIA

We have a second table called orders with three fields (order_id, supplier_id, and order_date).
It contains the following data:

order_id supplier_id order_date
500125 10000 2003/05/12
500126 10001 2003/05/13

再调用查询语句

代码如下

select suppliers.supplier_id, suppliers.supplier_name, orders.order_date
from suppliers, orders
where suppliers.supplier_id = orders.supplier_id(+);

结果为

supplier_id supplier_name order_date
10000 IBM 2003/05/12
10001 Hewlett Packard 2003/05/13
10002 Microsoft
10003 NVIDIA

人气教程排行