如何从一个sql表中选择未出现在另一个表中的项目

时间:2014-05-21 18:42:19

标签: mysql sql

我有一个具有ID的Customer表。每个Customer条目都有一个Design,它存储在Design表中(它包含要引用的CustomerID)。

在我的场景中,客户可以有多个设计,有时也没有设计。我如何选择只有设计的客户?

我尝试过这样的内部加入,但由于客户可以有很多设计,我仍然会收到太多记录:

Select * from Customer
Inner Join Design
On Design.CustomerID = Customer.ID
Where Design.CustomerID is not null

3 个答案:

答案 0 :(得分:0)

*选择所有表的所有记录。使用tablename.*仅选择特定表的所有记录。

Select Customer.*
from Customer
Inner Join Design
On Design.CustomerID = Customer.ID

但实际上,通过明确定义所需的列,您总是会感觉更好。所以使用

Select Customer.ID, Customer.Col2, Customer.Col3
from Customer
Inner Join Design On Design.CustomerID = Customer.ID
group by Select Customer.ID, Customer.Col2, Customer.Col3

当你使用inner join时,只返回实际上有连接表链接的记录 - 所以你的where子句已经过时了。

答案 1 :(得分:0)

我猜你在数据库中存储一个空字符串。

试试

  Select * from Customer
  Inner Join Design
  On Design.CustomerID = Customer.ID
  Where Design.CustomerID is not null
  AND Design.CustomerID != ''
  GROUP BY Customer.ID

答案 2 :(得分:0)

您可以执行where exists

select * from Customer
where exists (select 1 from Design where CustomerId = Customer.ID)