我有一个具有ID的Customer表。每个Customer条目都有一个Design,它存储在Design表中(它包含要引用的CustomerID)。
在我的场景中,客户可以有多个设计,有时也没有设计。我如何选择只有设计的客户?
我尝试过这样的内部加入,但由于客户可以有很多设计,我仍然会收到太多记录:
Select * from Customer
Inner Join Design
On Design.CustomerID = Customer.ID
Where Design.CustomerID is not null
答案 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)