Mysql 根据一个条件对表进行排序,并相应地列出剩余的行
我有一张有以下细节的桌子Mysql 根据一个条件对表进行排序,并相应地列出剩余的行,mysql,sql,select,sql-order-by,Mysql,Sql,Select,Sql Order By,我有一张有以下细节的桌子 cID sID Name pID childrenCount 1 1 Site 1 5 2 1 Safty 2 4 3 1 Archit 3 3 4 1 Civil 1 0 5 1 Concs 1 0 6 1 Pavm 1 0 7 1 Paint 3 0 8 1 Alum 3 0 9 1
cID sID Name pID childrenCount
1 1 Site 1 5
2 1 Safty 2 4
3 1 Archit 3 3
4 1 Civil 1 0
5 1 Concs 1 0
6 1 Pavm 1 0
7 1 Paint 3 0
8 1 Alum 3 0
9 1 Doors 3 0
10 1 Highw 1 0
11 1 Road 1 0
12 1 Alarm 2 0
13 1 Safty 2 0
14 1 Fence 2 0
15 1 Beaco 2 0
我想要的是编写一个select查询,首先按照它们的childrenCount值降序排列上面的表,并按照下面的顺序列出相应的行
cID sID Name pid childrenCount
1 1 Site 1 5
4 1 Civil 1 0
5 1 Conc 1 0
6 1 Pavm 1 0
10 1 Highw 1 0
11 1 Road 1 0
2 1 Safty 2 4
12 1 Alarm 2 0
13 1 Safty 2 0
14 1 Fence 2 0
15 1 Beacon 2 0
3 1 A WRK 3 3
7 1 Paint 3 0
8 1 Alumin 3 0
9 1 Doors 3 0
提前感谢您试试这个……先按
pid
下单,然后按childrenCount说明下单
SELECT * FROM TABLENAME order by pid, childrenCount desc
试试这个:
SELECT * FROM tableA ORDER BY pid, childrenCount DESC, cid
您的意思是类似于“按子项顺序计数说明”?不简单地按子项顺序计数,而是第一个条目是子项计数最高的行,然后列出所有子项,即与第一个条目对应的pid…主要考虑子项计数和pid字段您可以按顺序列出任意数量的列,这些列的顺序将是排序的顺序,但我需要一个稍微不同的答案,即假设如果cid=2有childrenCount 10,那么它也将保持在相同的位置,使用上面的查询。目前的工作方法是先通过pid进行排序,然后首先显示最高的子计数。但实际上,我需要的是将最高的childrncount显示为第一行,然后显示其对应的子项(pid与最高的childrencount相同的所有其他条目,以此类推)