我有一種情況,我需要一個雙重命令。 讓我試着解釋它(爲了簡單起見,我刪除了不必要的列)。mysql按順序分爲兩個不同的部分
(的currentdate = 2017年7月31日)
我有一個表叫用戶像這樣
user_id | username | user_changed
---------------------------------
1 | John Doe | 2017-07-31 12:22:58 (less then 48 hours)
2 | Test name| 2017-07-30 09:17:18 (less the 48 hours)
4 | itRocks2 | 2017-07-28 07:45:52 (greater then 48 hours)
3 | itRocks | 2017-07-29 07:45:52 (greater then 48 hours)
現在到了棘手的部分。我需要訂購成兩個不同的部分
一個部分: 第一部分需要由user_changed其中 user_changed是48 小時前或更小是一個隨機的順序。
第二部分: 需要訂購剩餘的用戶在user_changed通過user_changed ASC是大於48小時,以便所以從我們的數據庫的實例數據
這應該是結果
1 | John Doe | 2017-07-31 12:22:58
2 |測試名稱| 2017年7月30日9時17分18秒
這兩個需要以隨機的順序,因爲它們不太然後48小時 所有其他用戶(越大48小時)由user_changed ASC需要的順序,像這樣
3 | itRocks | 2017-07-29 07:45:52(例如52小時)
4 | itRocks2 | 2017-07-28 07:45:52(例如60小時)
此外,我需要user_id的默認命令,以便在以後的視圖中對用戶進行分組。所以有些疑問我已經試過:
查詢1
SELECT *, if(user_changed >= SUBDATE(NOW(), INTERVAL 48 HOUR), RAND(), 0) AS rndOrder
FROM users
ORDER BY user_id, rndOrder ASC
查詢2
SELECT *, if(user_changed >= SUBDATE(NOW(), INTERVAL 48 HOUR), "true", "false") AS rndOrder
FROM users
ORDER BY user_id ASC,
CASE
WHEN rndOrder = 1 THEN user_changed RAND()
WHEN frndOrder = 0 THEN user_changed ASC
END;
我試過了你的查詢@Cwallenpoole,但它不顯示像我上面描述的那樣。首先是les我們的48。然後,所有剩餘的48小時以上,按照asc – Bham
排序@Bham I切換了'<' and a '>'。 – cwallenpoole