在这种情况下如何使用mySQL ORDER BY

时间:2017-11-17 14:57:48

标签: mysql sql-order-by

我有table并尝试显示数据ORDER BY但基于多列。

表格

_______________________________________________
id | title | dis | cityid | dist | queue | date
_______________________________________________
1  |  abc  | 1   |  1     |  0   |  1    | 2017
2  |  cde  | 1   |  1     |  0   |  1    | 2017
3  |  efg  | 1   |  1     |  0   |  1    | 2017
4  |  ghi  | 1   |  1     |  0   |  1    | 2017
5  |title1 | 1   |  1     |  1   |  1    | 2017
6  | title2| 2   |  1     |  2   |  2    | 2017
7  | abc   | 2   |  1     |  0   |  2    | 2017
8  | cde   | 2   |  1     |  0   |  2    | 2017
9  | efg   | 2   |  1     |  0   |  2    | 2017

目标:

titl1
abc
cde
efg
ghi
titl12
abc
cde
efg

查询:

$sql = "SELECT * FROM district ORDER BY title ASC, queue ASC";

我也试过了:

$sql = "SELECT * FROM district ORDER BY title ASC, dist ASC";

但这些都不起作用,有什么建议吗? 此外,我可以自由添加/删除列或更改数据(如dist,队列)来实现此功能。

那些dis = 1的数据是标题1的子组,而dis = 2的数据是标题2的子组,title1和2是hading。

首先查询结果是:

    abc
    cde
    efg
    ghi
    titl1
    titl12
    abc
    cde
    efg

1 个答案:

答案 0 :(得分:0)

首先,您希望按主要组dis排序并显示最低的第一个:

ORDER BY dis ASC

然后,在该排序中,您希望使用相同的dis对所有标题进行排序,以获取标题(其中dist不为零):

ORDER BY dis ASC, dist DESC

最后,你希望其余部分按字母顺序排列:

ORDER BY dis ASC, dist DESC, title ASC