0

我有两个表,假设 table1 和 table2 有公共列,id 和 update_date。我希望根据最新的 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;

我可以通过将 select distinct id from (above query) 添加为 temp 来摆脱重复的 id;但问题是我也需要 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

限制第二个查询的结果:

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 回答