如何从两个表SQL中选择最新记录?

时间:2012-01-14 18:53:57

标签: sql sql-server

如何使用SQL从两个表中选择最新记录?

"select * from Table1,Table2 WHERE Date=(SELECT MAX(Date) FROM Table1,Table2)"

 -----------    -------------
|   table1  |  |   table2    |
 -----------    -------------
 -----------    -------------
|   title   |  |   title     |
 -----------    -------------
|   text    |  |   text      |
 -----------    -------------
|   date    |  |   date      |
 -----------    -------------

3 个答案:

答案 0 :(得分:6)

这样做:

SELECT TOP 1 * FROM 
(
    SELECT * FROM Table_1
    UNION ALL
    SELECT * FROM Table_2
) 
AS ALL_RECORDS
ORDER BY Date DESC

答案 1 :(得分:3)

尝试类似:

with tmp(title, text, date) as
(
select title, text, date from table1
union 
select title, text, date from table2
)
select top 1 * from tmp
order by date desc

这可以解决您的问题。

答案 2 :(得分:1)

SELECT * FTOM Table1,Tble2 ...创建一个交叉连接(两组记录的笛卡尔积),因此它将是具有相同日期的多个记录。您必须指定更多条件才能获得一条记录,并且可能使用一些连接。 如果你想从两个表中选择一个记录,例如Table1具有比Table2更新的记录,我认为使用union是个好主意,例如

SELECT col1, col2, col3, col4, ..., coln max(Date) FROM (
    SELECT * FROM Table1 UNION
    SELECT * FROM Table2
) GROUP BY col1, col2, col3, col4, ..., coln
ORDER BY Date;