使用唯一列创建表的子集

时间:2015-07-09 20:48:39

标签: sql

表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。 Table2Table1的子集,只有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)

如果我在包括日期在内的所有值上选择不同,它也将全部返回。有没有人对这个问题有所了解?

1 个答案:

答案 0 :(得分:1)

你可以尝试这个:

select max(id), val1, val2, max(Date) from table1
group by Val1, Val2