我有两个表,比如说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作为temp来摆脱重复的id;但问题是我也需要update_date。
任何人都可以建议如何摆脱重复,仍然获得id和update_date信息。
答案 0 :(得分: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
答案 1 :(得分: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;
答案 2 :(得分: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])