2013-06-11 83 views
4

我有以下正在成功生成結果的查詢。然而,結果是連續的,我想通過所謂的clicksUNION ALL訂購最終結果

(SELECT women_id, title, body FROM women ORDER BY women_id DESC LIMIT 5) 
UNION ALL 
(SELECT man_id, title, body FROM man ORDER BY man_id DESC LIMIT 5) 

現在兩個表中一列責令其給出的結果是這樣的:

women 41124 
women 124 
women 12 
women 2 
women 1 
men 3455434 
men 1233 
men 135 
men 23 
men 1 

我需要它給像最終結果這樣的:

men 3455434 
women 41124 
men 1233 
men 135 
women 124 
men 23 
women 12 
women 2 
women 1 
men 1 

回答

5

您需要在clicksUNION -ed數據集帶來,加ORDER BY,然後投影不必要柱而出另一個SELECT,就像這樣:

SELECT person_id, title, body FROM ((
    (SELECT women_id as person_id, title, body, clicks FROM women ORDER BY women_id DESC LIMIT 5) 
UNION ALL 
    (SELECT man_id as person_id, title, body, clicks FROM man ORDER BY man_id DESC LIMIT 5) 
) ORDER BY clicks DESC) data 
+0

我要提出這個建議。看起來有4或5個人有同樣的想法 - 這是唯一一個添加到'點擊'列並通過 –

+0

爲什麼添加子查詢的訂單? – Ochi

+0

@Ochi推出''clicks'列,哪個OP不希望在輸出中看到。 – dasblinkenlight

0
(
    (SELECT women_id, title, body, clicks FROM women ORDER BY women_id DESC LIMIT 5) 
    UNION ALL 
    (SELECT man_id, title, body, clicks FROM man ORDER BY man_id DESC LIMIT 5) 
) 
ORDER BY clicks DESC 

只是在末尾添加順序和完成工作

+0

點擊仍然不是有效的列內聯盟 –

+0

他說有這樣一列 – Ochi

+0

你現在已經添加它 - 在發佈時,你沒有將它包含在UNIONs –

0
SELECT * FROM 
(
    (SELECT women_id AS ID, title, body FROM women LIMIT 5) 
    UNION ALL 
    (SELECT man_id AS ID, title, body FROM man LIMIT 5) 
) 
ORDER BY ID DESC 
+0

這個看起來可能適合,但它說「每個派生表都必須有自己的別名」作爲錯誤 –