我有2個表,我加入他們。如何對mysql的兩個不同的值進行排序?
我有一個special_id
場,如果special_id
場> -1
那麼它們應該被打印出來以前只是那些special_id < -1
。 然後我想訂購他們name
。
我該怎麼做?
一個簡單的order by special_id asc, name desc
是不夠的。
我有2個表,我加入他們。如何對mysql的兩個不同的值進行排序?
我有一個special_id
場,如果special_id
場> -1
那麼它們應該被打印出來以前只是那些special_id < -1
。 然後我想訂購他們name
。
我該怎麼做?
一個簡單的order by special_id asc, name desc
是不夠的。
其周圍的其他方式:
ORDER BY special_id DESC,ASC名
你必須在2(一個用於special_id> -1,其他爲special_id <的情況下拆分查詢 - 1,兩者均由用戶名排序),添加一個常數它們各自,UNION它們,然後排序加入恆定較早
實施例:
(SELECT 1 AS main_order, t.* FROM table t WHERE special_id > -1)
UNION
(SELECT 2 AS main_order, t.* FROM table t WHERE special_id < -1)
ORDER BY main_order, name DESC
嘗試是這樣的:
(SELECT CASE WHEN special_id > -1 THEN 1 ELSE 0 END orderValue,t.* FROM table1 t)
UNION
(SELECT CASE WHEN special_id > -1 THEN 1 ELSE 0 END orderValue,t.* FROM table2 t)
ORDER BY orderValue,name DESC;
這裏是我的結果:
/*************************/
| orderValue | name |
| 0 | foo |
| 0 | bar |
| 1 | foobar |
| 1 | barfoo |
/************************/
希望有所幫助。
這聽起來不錯!添加一個常數,你到底意味着什麼? – krackmoe 2011-05-26 08:56:07
我編輯了一個查詢例子 – 2011-05-26 09:07:50
mh ..不知何故,它不工作如何我想它是..:/ 如果我這樣做就像你說..訂單似乎是隨機的... – krackmoe 2011-05-26 09:19:16