SQL SELECT字段在不同的表中

时间:2017-04-05 17:50:19

标签: sql

我有两张桌子,一张叫做订单,另一张是发票。我想知道我是否有没有发票的已结账单。他们加入了id_order,所以我有这个。

select  I.ID_Order,O.ID_order from Invoices I
inner join Orders O on o.ID_Order = I.ID_Order
where o.Status='x'

如果在发票中找到o.iD_order,则表示订单已开票。 如果在发票中找不到o.id_order,则表示未开发票。

我想在select语句中输入所有未开票的订单。

1 个答案:

答案 0 :(得分:0)

方法一:

select *  
From Order 
Where ID_Order not in (Select ID_Order from Invoices)

方法2:

select  O.*
from Orders O 
Left join
Invoices I
on o.ID_Order = I.ID_Order
where I.ID_Order IS NULL

方法3:

select * 
From Order as O
Where Not Exists (Select ID_Order from Invoices as I Where I.ID_Order = O.ID_Order)

坚持第一个,通常表现更好。