mysql(mariadb)按两列排序不起作用

mysql(mariadb)按两列排序不起作用,mysql,mariadb,Mysql,Mariadb,我试图通过文本和时间戳排序得到答案,第一个答案必须是text=null的答案,第二个答案是ts排序的text not null的答案,但它不起作用: SELECT * FROM answers WHERE user_id = 1279942 ORDER BY text, ts desc; +----------+---------+-------------+------------+-------------------------------+--------+ | id | u

我试图通过文本和时间戳排序得到答案,第一个答案必须是text=null的答案,第二个答案是ts排序的text not null的答案,但它不起作用:

SELECT * FROM answers WHERE user_id = 1279942 ORDER BY text, ts desc;
+----------+---------+-------------+------------+-------------------------------+--------+
| id       | user_id | question_id | ts         | text                          | is_new |
+----------+---------+-------------+------------+-------------------------------+--------+
| 81187563 | 1279942 |    30918210 | 1487186969 | NULL                          |      0 |
| 81187560 | 1279942 |    30918209 | 1487117018 | NULL                          |      0 |
| 81187559 | 1279942 |    30918208 | 1487116399 | NULL                          |      0 |
| 81187557 | 1279942 |    30918205 | 1487024673 | Jg jg jg                      |      1 |
| 81187555 | 1279942 |    30918205 | 1487022656 | Jg jg jg                      |      1 |
|        7 | 1279942 |    30915697 | 1397915529 | lf                            |      0 |
| 81187535 | 1279942 |    30915687 | 1397047472 | да                            |      0 |
|        8 | 1279942 |    30915697 | 1397990298 | да все ок                     |      0 |
| 81187543 | 1279942 |    30915688 | 1397047582 | Да ничего                     |      0 |
| 81187561 | 1279942 |    30918206 | 1487186497 | Леха, все супер!              |      1 |
| 81187556 | 1279942 |    30918205 | 1487022667 | Оп оп                         |      1 |
| 81187558 | 1279942 |    30918207 | 1487186977 | Последний ответ               |      1 |
| 81187562 | 1279942 |    30917194 | 1487186733 | ТЕСТОВЫЙ ОТВЕТ                |      1 |
|     1537 | 1279942 |    30917195 | 1413380315 | фыв                           |      0 |
| 81187547 | 1279942 |    30915691 | 1397048820 | щл                            |      0 |
+----------+---------+-------------+------------+-------------------------------+--------+
15 rows in set (0.00 sec)

第四行必须是id为81187558的答案。谁知道是什么引起的 未经测试,但您可能会使用类似的方式来订购您所追求的款式:

SELECT * FROM answers WHERE user_id = 1279942 
    ORDER BY ISNULL(text) DESC, ts DESC;
请注意,
ISNULL()
如果值不为null,则返回
0
,如果值为null,则返回
1
。因此,通过先按降序排序,我们将
text
NULL
的所有记录放在顶部。这将创建两个共享
ISNULL
值的存储桶。因此,剩余部分将仅按
ts
排序,因为
ISNULL
都是
0


您最初的方法首先按
text
进行排序,然后对每个共享
text
值桶内部按
ts
进行排序

未经测试,但您可能可以使用类似的方式来订购您所追求的款式:

SELECT * FROM answers WHERE user_id = 1279942 
    ORDER BY ISNULL(text) DESC, ts DESC;
请注意,
ISNULL()
如果值不为null,则返回
0
,如果值为null,则返回
1
。因此,通过先按降序排序,我们将
text
NULL
的所有记录放在顶部。这将创建两个共享
ISNULL
值的存储桶。因此,剩余部分将仅按
ts
排序,因为
ISNULL
都是
0


您最初的方法首先按
text
进行排序,然后对每个共享
text
值桶内部按
ts
进行排序

哇。。这是可行的,但是使用isnull和只按列排序有什么区别呢?哇。。它是有效的,但是使用isnull和只按列排序有什么区别呢?