我有两张桌子,我想加入.一个包含客户列表,另一个是订单列表.我试图制定一个查询,让我来选择所有在表中列出的客户的客户谁在表中具有至少一个订单的订单.但是,我不想为那些有多个订单的客户提供重复项.有什么建议我怎么能做到这一点?
我知道这可能是一个常见的问题,但我不知道这种类型的查询会被调用,以便我可以搜索答案.任何建议将不胜感激.谢谢.
这比你想象的要简单得多:
select distinct(customer_id) from orders;
编辑:如果您确实想获得有关客户的完整信息,
select * from customers where customer_id in (select distinct(customer_id) from orders);
使用:
SELECT c.*
FROM CUSTOMERS c
WHERE EXISTS (SELECT NULL
FROM ORDERS o
WHERE o.custeromid = c.id)
Run Code Online (Sandbox Code Playgroud)
IN子句是一种替代方法,但EXISTS对于重复项更有效,因为它在第一个副本上返回true,因此它不处理整个表.