在Join

时间:2017-03-03 13:38:09

标签: sql select join distinct

我有2个表可以用一个键链接。问题是1个表也是时间切片。我只需要从这张表中选择2行,但它们会在不同时间重复出现。所以我想从这个表中选择一个不同的值并将它链接到我的另一个。 我尝试做什么:

SELECT a.firstcolumn,
       a.secondcolumn,
       b.somecolumn
from table1 a
INNER JOIN (SELECT DISTINCT somecolumn from table2) b
    on a.key = b.key

这段代码运行但是我得到的记录太多了(几乎是两倍),所以不同的是,它并没有完成它的工作。 我希望输出包含a.firstcolumn,a.secondcolumn和b.somecolumn

2 个答案:

答案 0 :(得分:0)

评论太长了。如果您有时间分片表,则目的是选择值的日期/时间。最近的值通常是end_dt(缺少更好的术语)将来或NULL。{/ p>

在不知道您的数据结构的情况下,我希望这样:

SELECT a.firstcolumn, a.secondcolumn, b.somecolumn
FROM table1 a JOIN 
     b 
     ON a.key = b.key AND b.end_dt IS NULL;

答案 1 :(得分:0)

也许删除不同的并且取日期字段的最大值(或最小值)将为您提供所需的内容。

SELECT a.firstcolumn,
       a.secondcolumn,
       b.somecolumn
from table1 a
INNER JOIN (SELECT key, somecolumn, max(date) from table2 group by key, somecolumn) b
    on a.key = b.key