我希望退回自指定日期以来未记录任何订单的任何联盟会员。通过此查询应该简单易懂。
select * from affiliate where
idUser not in (
select idAffiliate from Orders
where orderDate > '06/01/11'
)
affiliate表有一个idUser字段,它是Orders表的idAffiliate的外键。上面没有记录,即使我知道我有几十个自本月初以来没有下订单的附属公司。如果我将日期更改为'07 / 01/11' - 所有联盟会员记录都会返回(显然),但会验证我是否使用了正确的实体名称。
非常感谢
答案 0 :(得分:4)
看起来您必须在嵌套查询中将idAffiliate更改为idUser。 在这种情况下,最好使用EXISTS或NOT EXISTS而不是IN
select * from affiliate a
where not exists (
select 1 from Orders where orderDate > '06/01/11'
and Orders.idUser = a.idUser
)
答案 1 :(得分:0)
使用左连接:
select a.*
from affiliate a
left join Orders o
on a.idUser= o.idAffiliate
and o.orderDate > '06/01/11'
where o.idAffiliate is null