我有一個包含 3 列的表格 - chat, video, and call. 它們可以有值0或1。
現在我想對結果進行排序,如果所有三個(聊天、視頻和通話)都是0,那么這些行在最后,否則它們具有隨機順序。
在這種情況下,SQL 查詢是什么?我正在使用 MySQL。
uj5u.com熱心網友回復:
您可以使用CASE子句中的ORDER BY子句使用條件排序。
例如:
select *
from t
order by case when chat video `call` = 0 then 1 else 0 end
如果隨機順序非常重要,您可以更改順序,如下所示:
select *
from t
order by case when chat video `call` = 0
then 1 rand()
else 0 rand()
end
uj5u.com熱心網友回復:
只需將它們降序排列即可。(0,0,0) 元組留在底部
select *
from yourtable
order by chat desc, video desc, `call` desc
但對它們進行排序。
但是您也可以通過將真正的 OR 清零來進行排序
(因為 NULL 在升序排序時保持在最前面)
select *
from yourtable
order by nullif(chat or video or `call`,1)
uj5u.com熱心網友回復:
使用列值只能是 0 或 1 的事實,MySQL 在邏輯操作中理解它們:
SELECT *
FROM tbl
ORDER BY CASE WHEN chat OR video OR call THEN RAND() 1 ELSE 0 END DESC
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/361087.html
上一篇:laravel查詢生成器計數關系
