HQL - 选择值不在内连接中的结果

时间:2017-06-02 02:27:06

标签: sql hql

我尝试选择所有客户ID,但至少拥有一个类型" d"

的客户除外。

我试过了:

select customers.id from Customers customers inner join Orders orders on orders.buyerId = customers.id where orders.type != 'd';

但是这会选择所有客户ID,只要客户至少有一个订单没有输入" d"。

除了至少有一个类型的订单" d"?

之外,我如何选择所有客户ID?

2 个答案:

答案 0 :(得分:0)

您应该使用not in in like

,而不是使用Inner Join
select customers.id from Customers customers
where customers.id not in (select buyerId from Orders where orders.type = 'd';)

因此我们会过滤所有订单类型为" d"的客户。 如果您使用上述内容,则只会根据订单进行过滤,如果同一客户有另一个订单,客户ID仍会显示。

答案 1 :(得分:0)

试试这个:

SELECT customers.id FROM Customers customers 
LEFT JOIN Orders orders ON orders.buyerId = customers.id AND orders.type = 'd'
WHERE orders.KEY IS NULL

将orders.KEY替换为Orders表的关键字段名称