我有一个MySQL
数据库,其中table
称为“订单”,其中包含我的所有订单。在此表中,我有不同的字段,如:
id
userId
dateOrder
我希望获得用户分组的所有订单仅适用于执行between 2 and 5
订单的用户。
但我的SQL查询不起作用。考虑这些条目:
id userId dateOrder
1 138 2013-03-19
2 138 2013-03-19
3 222 2013-03-19
我想要一个SQL请求,只选择由至少完成2个订单的用户制作的订单。
对于此示例,SQL应返回:
userId 138
我尝试GROUP BY
与DISTINCT
,但这些都不起作用。你能帮我吗 ?
谢谢!!
答案 0 :(得分:2)
您应该能够使用HAVING
子句来获得结果:
select userid
from orders
group by userid
having COUNT(*) >= 2
and COUNT(*) <= 5
如果您想要返回有关每个订单的所有详细信息,可以将查询扩展为:
select o1.id, o1.userid, o1.dateorder
from orders o1
where exists (select userid
from orders o2
where o1.userid = o2.userid
group by userid
having COUNT(*) >= 2
and COUNT(*) <= 5)
答案 1 :(得分:1)
我认为应该这样做......
Select * from orders where userid in
(
Select userid from orders
group by userid having count(1) between 2 and 5
)