0

嘿,我有一个按日期排序的查询,我希望日期与按时间排序相同,以保持稳定的结果。

我有以下查询:

    (
SELECT  'album' AS RowType, id, DATE, title, time_added
FROM albums
WHERE is_temp =0
AND subject_id =  '3'
)
UNION ALL (

SELECT  'video' AS RowType, id, DATE, title, time_added
FROM videos
WHERE is_temp =0
AND subject_id =  '3'
)
UNION ALL (

SELECT  'story' AS RowType, id, DATE, title, time_added
FROM stories
WHERE is_temp =0
AND subject_id =  '3'
)
ORDER BY DATE, time_added

哪个效果很好,但我不想选择该time_added列,因为我的结果集中不需要它。

我能以某种方式实现这一目标吗?如果我删除 time_add 查询将不会运行。

我发现了以下内容:

ORDER BY 子句导致对输出行进行排序。
ORDER BY 的参数是用作排序键的表达式列表。对于简单的 SELECT,表达式不必是结果的一部分,但在复合 SELECT 中,每个排序表达式必须与结果列之一完全匹配。每个排序表达式可以可选地后跟一个 COLLATE 关键字和用于排序文本的排序函数的名称和/或关键字 ASC 或 DESC 以指定排序顺序。

我无法决定是否意味着这是不可能的,或者我应该更加努力。

4

1 回答 1

0

尝试这个

SELECT RowType
    , id
    , DATE
    , title
FROM 
(
    SELECT 'album' AS RowType , id , DATE , title , time_added
    FROM albums
    WHERE is_temp = 0 AND subject_id = '3'

    UNION ALL

    SELECT 'video' AS RowType , id , DATE , title , time_added
    FROM videos
    WHERE is_temp = 0 AND subject_id = '3'

    UNION ALL

    SELECT 'story' AS RowType , id , DATE , title , time_added
    FROM stories
    WHERE is_temp = 0 AND subject_id = '3'

) s
ORDER BY DATE , time_added
于 2012-11-27T09:53:23.623 回答