我有下表
表格
txt id1 id2 id3
Whistler 1 2 11
Slim 2 1 11
Fluffy 10 1 11
Buffy 20 1 11
Claws 3 1 11
Fang 11 1 11
Bowser 31 1 11
Edward 5 2 12
Puffball 8 2 12
Chirsy 9 2 12
当我写下面的查询时:它按“txt”列按字母顺序排序。
SELECT * FROM t
WHERE id2=2
ORDER BY CASE WHEN id2 = 2 THEN txt
WHEN id2 = 1 THEN id1
END ASC ;
上面的查询给出的结果如下:
txt id1 id2 id3
Chirsy 9 2 12
Edward 5 2 12
Puffball 8 2 12
Whistler 1 2 11
现在,如果我想对数据进行数字排序,那么我写下面的查询。
SELECT * FROM t
WHERE id2=1
ORDER BY CASE WHEN id2 = 2 THEN txt
WHEN id2 = 1 THEN id1
END ASC ;
但是上面的查询给了我这样的结果:
txt id1 id2 id3
Fluffy 10 1 11
Fang 11 1 11
Slim 2 1 11
Buffy 20 1 11
Claws 3 1 11
Bowser 31 1 11
但是在上面的结果中 id1 列没有排序..为什么?
我想要上述查询的输出如下:
期望的输出:
txt id1 id2 id3
Slim 2 1 11
Claws 3 1 11
Fluffy 10 1 11
Fang 11 1 11
Buffy 20 1 11
Bowser 31 1 11
如何为此编写查询。
最佳答案
试试这个:
SELECT
*
FROM t
WHERE id2 = 1
ORDER BY CASE
WHEN id2 = 2 THEN txt
END ASC,
CASE
WHEN id2 = 1 THEN id1
END ASC;
SELECT
*
FROM t
WHERE id2 = 2
ORDER BY CASE
WHEN id2 = 2 THEN txt
END ASC,
CASE
WHEN id2 = 1 THEN id1
END ASC;
关于mysql - 如何按数字和字母顺序对数据进行排序取决于mysql中单个查询的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48277037/