如何使用MySQL获得以下结果
您好,我有一个名为如何使用MySQL获得以下结果,mysql,sql,select,group-by,sql-order-by,Mysql,Sql,Select,Group By,Sql Order By,您好,我有一个名为orders\u pending 它有列订单号和型号 order_number | model 1 1 1 2 2 1 2 3 2 5 3 5 4 2 正如您所看到的,一个订单可以有多个型号,在我的表中没有唯一的键,但是如果我同时获取订
orders\u pending
它有列订单号
和型号
order_number | model
1 1
1 2
2 1
2 3
2 5
3 5
4 2
正如您所看到的,一个订单可以有多个型号,在我的表中没有唯一的键,但是如果我同时获取订单号和型号,它是唯一的
我想要这样的结果
order_number | model
2 1
2 3
2 5
1 1
1 2
只有具有多个型号的订单号
,并且应根据表中显示的订单数进行排序
我尝试了很多解决办法,但都没有成功
请帮忙。提前感谢。创建一个子查询,获取模型总数,并筛选出具有多个模型的订单号
。然后将结果与表本身联接。使用TotalCount
列对结果进行排序
SELECT a.*
FROM orders_pending a
INNER JOIN
(
SELECT order_number, COUNT(*) TotalCount
FROM orders_pending
GROUP BY order_number
HAVING COUNT(*) > 1
) b ON a.order_number = b.order_number
ORDER BY b.TotalCount DESC, a.order_number, a.model
首先,我们得到了具有多个型号的订单号
SELECT order_number, COUNT(*) AS how_many_orders
FROM
orders_pending
GROUP BY order_number
HAVING COUNT(*) > 1;
然后我们将其连接起来,得到表中属于这些订单号的每一行
SELECT
op.order_number, op.model
FROM
orders_pending op
INNER JOIN (
SELECT order_number, COUNT(*) AS how_many_orders
FROM
orders_pending
GROUP BY order_number
HAVING COUNT(*) > 1
) sq ON op.order_number = sq.order_number
ORDER BY how_many_orders, op.order_number
试试这个:从“tablename”中选择*,其中的顺序是按型号asc排序的_number='1'和&'2',尽管我不确定语法!在MySql文档中查看它。。。但从逻辑上讲,你会得到你的output@HardikAnavadia我有大约70000个订单号,因此无法硬编码;)哦!我以为你的问题是针对具体点的所以!。。。。很快会给你回信的,非常感谢:),但似乎要花很长时间才能完成,我的表中有70000多条记录,它仍在执行:/尝试添加索引:ALTER table orders\u pending ADD index IDX\u orders\u pending(订单号,型号)
哦,太好了,我忘了。1.5764秒lolz。多谢各位