0

私は 2 つのテーブルを持っています。共通の列 id と update_date を持つ table1 と table2 としましょう。最新の update_date に基づいて ID と update_date を降順で取得しようとしています。「union」と「order by」を一緒に使用して、結果を update_date の降順で表示しましたが、重複した ID があり、それを取り除く方法がわかりません。

私のクエリは、

(select id,update_date from table1 where [condition])
UNION
(select id,update_date from table2 where [condition])
order by update_date desc;

重複する ID を取り除くには、(上記のクエリから) 選択した個別の ID を temp; として追加します。しかし、問題は update_date も必要だということです。

重複を取り除き、id と update_date の両方の情報を取得する方法を提案できますか。

4

3 に答える 3

1

重複から最新の更新が必要であると仮定すると、これは機能するはずです:

SELECT id, max(update_date) AS last_update
FROM
  ( (select id,update_date from table1 where [conditions])
     UNION
    (select id,update_date from table2 where [conditions]) ) both_tables
GROUP BY id
ORDER by last_update DESC
于 2012-07-05T15:53:53.853 に答える
0

DISTINCTクエリをブロックでラップします。

SELECT DISTINCT * FROM (
  select id,update_date from table1 where [condition]
  UNION
  select id,update_date from table2 where [condition]
)
order by update_date desc;
于 2012-07-05T15:40:36.917 に答える
0

2 番目のクエリの結果を制限します。

select id, update_date
  from table1
 where [conditions]
union
select id, update_date
  from table2
 where [conditions]
   and id not in (select id from table1 where [conditions])
于 2012-07-05T15:40:45.983 に答える