查看以下 SQL 小提琴:http ://sqlfiddle.com/#!2/962496/1
怎么能从用户 b@b.cn 中选择 userpk = 2 和 reg = 1 的所有订单,但只选择来自 a@a.cn 的两个最新订单,其中 userpk = 1 和 reg = 0。所以查询将显示 3 个订单对于 userpk = 2 但只有 2 个订单(不是来自 userpk = 1 的最早订单 2012-01-01
所以条件是 reg,如果 reg = 0 则忽略一阶
查看以下 SQL 小提琴:http ://sqlfiddle.com/#!2/962496/1
怎么能从用户 b@b.cn 中选择 userpk = 2 和 reg = 1 的所有订单,但只选择来自 a@a.cn 的两个最新订单,其中 userpk = 1 和 reg = 0。所以查询将显示 3 个订单对于 userpk = 2 但只有 2 个订单(不是来自 userpk = 1 的最早订单 2012-01-01
所以条件是 reg,如果 reg = 0 则忽略一阶
我认为这会给你你想要的结果:
select *
from users u
left join another a
on u.userpk = a.uPK
where
(
u.userpk = 2
and u.reg = 1
)
or
(
u.userpk = 1
and u.reg = 0
and a.odate not in (select min(odate)
from another a1
where u.userpk = a1.uPK)
)
不特定于单个用户的版本(如果您有 2 个以上的用户):
select *
from users u
left join another a
on u.userpk = a.uPK
where
(
u.reg = 1
)
or
(
u.reg = 0
and a.odate not in (select min(odate)
from another a1
where u.userpk = a1.uPK)
)