MySQL UNION查询来自一个表+ ORDER BY

时间:2010-04-15 21:34:01

标签: mysql union sql-order-by

我有一个包含两个查询的表,我需要使用ORDER BY以降序类型对其进行排序。这是我的MySQL查询无法正常工作:

(SELECT `text` 
FROM `comments` 
WHERE user_fr='".$user."' && archive='1'
ORDER BY `is_new_fr` DESC) 
    UNION
(SELECT `text` 
FROM `message` 
WHERE user_to='".$user."' && archive='1' 
ORDER BY `is_new_to` DESC)

描述!

is_new_fr和is_new_to计算新邮件总数。

这是我的表格:

user_fr | user_to |档案| is_new_fr | is_new_to |文本

name1 | name2 | 1 | 2 | 0 |测试...

name2 | name1 | 1 | 0 | 5 |测试...

我想订购第1个会显示包含更多消息的备注,或者使用DESCending类型的其他单词。

这是我想要做的页面上的显示:

使用name2打开对话框。消息(5) 使用name1打开对话框。消息(2)

谢谢!

1 个答案:

答案 0 :(得分:1)

我知道的唯一方法是子查询:

SELECT `text`
FROM (
    SELECT `text`, `is_new_fr` AS `is_new`
    FROM `comments`
    WHERE user_fr = '".$user."'
    AND archive = '1'

    UNION

    SELECT `text`, `is_new_to` AS `is_new`
    FROM `message`
    WHERE user_to = '".$user."'
    AND archive = '1'
) ORDER BY `is_new` DESC