在联合查询中按日期排序

时间:2012-08-15 16:31:54

标签: mysql sql

SELECT * 
FROM 
(
    SELECT case_id,diagnosis_title,updated 
    FROM tbl_case 
    order by updated desc 
) as table1

UNION

select * 
FROM 
(
    select image_id,image_title,updated 
    from tbl_image 
    order by updated desc 
) as table2

如何显示混合订单的记录。当前tbl_Case条记录显示第一部分,tbl_image记录显示在第二部分。

我想混合输出。 ORDER BY应适用于两个表格。

3 个答案:

答案 0 :(得分:3)

你做任何外部选择*的任何原因?他们是毫无意义的,因为他们只是重新选择你已经选择的一切。

使用mysql联合,这是您订购整个结果集的方式:

(SELECT case_id, diagnosis_title, ... FROM ...)
UNION
(SELECT image_id, image_title, ... FROM ...)
ORDER BY ...

如果将包围放在上面,则order by将两个结果集中的所有记录排序在一起,而不是分别对每个单独查询的结果进行排序。

答案 1 :(得分:1)

尝试简单查询。

    SELECT case_id,diagnosis_title,updated
    FROM tbl_case 
    UNION
    select image_id,image_title,updated
    from tbl_image 
    ORDER BY updated desc

答案 2 :(得分:0)

你可以这样做,(我只是猜测数据类型)

CREATE TEMPORARY TABLE TempTable
    (id int, title varchar(100), updated tinyint(1));

INSERT TempTable
SELECT case_id, diagnosis_title, updated  FROM tbl_case ORDER BY updated DESC;
INSERT TempTable
SELECT image_id, image_title, updated FROM tbl_image ORDER BY updated DESC;

SELECT * FROM TempTable;

显然,这使用临时表而不是联合来实现我认为你要求的。