Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用MySQL获得以下结果_Mysql_Sql_Select_Group By_Sql Order By - Fatal编程技术网

如何使用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。多谢各位