2012-01-14 33 views
0

SQLを使用して2つのテーブルから最新のレコードを選択する方法は?これはあなたの問題を解決する必要があり2つのテーブルから最新のレコードを選択する方法SQL?

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 

"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の最後のレコード)か、2つのタイトル、2つのテキスト、2つの日付の1つのレコードであっても最新のレコードですか? – Eddy

答えて

6

これはそれを行います。

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

実際には*を避け、必要な列を選択する必要があります。 。 。 – XIVSolutions

3

のようなものを試してみてください。

+1

アンドレアス・ローデは私にそれを打ち明けました。 +1 – XIVSolutions

1

SELECT * FTOM Table1、Tble2 ...は、同じ日付の複数のレコードになるように、クロス結合(2組のレコードのデカルト積)を作成します。レコードを1つだけ取得するためには、より多くの条件を指定しなければならず、おそらくいくつかの結合を使用する必要があります。 2つのテーブルから1つのレコードを選択したい場合、たとえば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; 
関連する問題