2012-01-14 82 views
0

如何使用SQL從兩個表中選擇最新的記錄?如何從兩個表中選擇最新的記錄SQL?

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

----------- ------------- 
| table1 | | table2 | 
----------- ------------- 
----------- ------------- 
| title | | title  | 
----------- ------------- 
| text | | text  | 
----------- ------------- 
| date | | date  | 
----------- ------------- 
+1

什麼是從預期的輸出?來自表1或2的記錄中的最後一條記錄(最後來自表1,最後來自表2),或者甚至有1條記錄,其中有2個標題,2個文本和2個日期? – Eddy 2012-01-14 19:34:35

回答

6

這將做到這一點:

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

雖然,你真的應該避免*,而是選擇你需要的列。 。 。 – XIVSolutions 2012-01-14 19:40:18

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 

這應該解決您的問題。

+1

安德烈亞斯羅德打敗了我。 +1 – XIVSolutions 2012-01-14 19:40:47

1

SELECT * FTOM Table1,Tble2 ...創建一個交叉連接(兩組記錄的笛卡爾乘積),所以它將成爲具有相同日期的多條記錄。您必須指定更多條件才能獲取一條記錄,並且可能使用一些連接。 如果你想從兩個表中選擇一條記錄,例如Table1的記錄比Table2更新,我認爲使用聯合是個好主意。

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; 
相關問題