我不确定这是否可行
我有一张包含orders
和userid
我需要SELECT
查询ORDER BY
客户订单数量最少
示例:
userid1 has 10 orders
userid2 has 5 orders
然后SELECT
应在顶部显示userid2
提前致谢
答案 0 :(得分:5)
如果你有订单作为ordersCount我的意思是作为一个保持订单计数的字段
Select * FROM YourTable order by orders ASC
否则,如果您有每个订单的记录,那么
Select * FROM YourTable Group by UserID order by count(*) ASC;
像这样申请限额
Select *
FROM YourTable
Group by UserID
order by count(*) ASC
limit startIndex, fetchSize;
其中startIndex和fetchSize是int,用于定义限制
答案 1 :(得分:2)
您需要按userid
进行分组,以便按用户计算订单。
SELECT userid, count(1) FROM orders GROUP BY userid ORDER BY count(1) asc
答案 2 :(得分:1)
您可以使用GROUP BY完成此操作并按COUNT()排序。
就是这样的。
SELECT userid, COUNT(*) qt
FROM orders
GROUP BY userid
ORDER BY qt
答案 3 :(得分:0)
您可以选择列的COUNT
并为其命名,然后使用该名称进行排序。这是一个例子:
SELECT
p.*,
(SELECT COUNT(o.order_id) FROM orders AS o WHERE p.partron_id=p.patron_id) AS orderCount
FROM
patrons AS p
WHERE
...
ORDER BY
orderCount ASC
更新:刚刚意识到只有在单独的表中才有订单而不是顾客才有用。如果你只看一张桌子,请不要理会。 p>
此查询要求您有两个表,一个patron
表,其中包含名称等赞助信息,以及一个orders
表,其patron_id
列与{中的标识列相匹配{1}}表。
这样做的好处是您可以同时请求顾客信息,因此如果您打算使用该信息,则无需在PHP中运行两个查询。
答案 4 :(得分:0)
但是,如果每个订单都在自己的行中,则需要汇总它们:
SELECT * from MYTABLENAME GROUP BY userid ORDER BY COUNT(*)
答案 5 :(得分:0)
伯爵就是你要找的东西
SELECT count(theField) as theCount, *
FROM theTable
GROUP BY theField
ORDER BY theCount