2013-06-11 44 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

这个看起来可能适合,但它说“每个派生表都必须有自己的别名”作为错误 –