表1:
+-----+---------+---------+-------------+
ID | Val1 | Val2 | Date
+-----+---------+---------+-------------+
1 | 10 | 11 | 2015-05-10
2 | 10 | 11 | 2015-05-17
3 | 10 | 11 | 2015-05-23
4 | 9 | 17 | 2015-08-10
5 | 9 | 17 | 2015-08-15
+-----+---------+---------+-------------+
表2
+-----+---------+---------+-------------+
ID | Val1 | Val2 | Date
+-----+---------+---------+-------------+
3 | 10 | 11 | 2015-05-23
5 | 9 | 17 | 2015-08-15
+-----+---------+---------+-------------+
我想写一些允许我从Table1
转到Table2
的SQL。 Table2
是Table1
的子集,只有Val1和Val2唯一对的最新日期。
要从Table1
获取我需要的Val1和Val2的独特组合,我可以使用:
SELECT DISTINCT Val1, Val2
FROM Table1
我坚持使用独特的组合选择表1中的子集。如果我执行以下操作,它显然会返回表1中的所有结果:
SELECT Val1, Val2, Date
FROM Table1
WHERE EXISTS( SELECT DISTINCT Val1, Val2 FROM Table1)
如果我在包括日期在内的所有值上选择不同,它也将全部返回。有没有人对这个问题有所了解?
答案 0 :(得分:1)
你可以尝试这个:
select max(id), val1, val2, max(Date) from table1
group by Val1, Val2