加入 tables,同时从第二个 table 返回不同的值
Join tables while returning distinct values from the second table
我想加入两个 table 通过日期值加入。以下是我想加入的 table。
**Table 1** **Table2**
ID Name Date AnalysisID ID Name Date FileID
1 Test 8/1/14 50 1 Test 8/1/14 10
1 Test 8/1/14 55 1 Test 8/1/14 12
1 Test 8/1/14 64
1 Test 8/1/14 67
尝试加入时,我将使用以下 sql
为每个 AnalysisID 获取重复的 FileID
select t1.id
, t1.name
, t1.date
, t1.analysisid
, t2.fileid
from Table_1 t1
, Table_2 t2
where t2.id = t1.id
and t2.name = t1.name
and t2.date = t2.date
**Joined Table**
ID Name Date AnalysisID FileID
1 Test 8/1/14 50 10
1 Test 8/1/14 50 12
1 Test 8/1/14 55 10
1 Test 8/1/14 55 12
1 Test 8/1/14 64 10
1 Test 8/1/14 64 12
1 Test 8/1/14 67 10
1 Test 8/1/14 67 12
我想要的结果如下所示
**Desired Table**
ID Name Date AnalysisID FileID
1 Test 8/1/14 50 10
1 Test 8/1/14 55 12
1 Test 8/1/14 64
1 Test 8/1/14 67
我不确定如何完成此操作。我已经尝试使用 row_number 解决方案删除重复项,但我只是看起来非常不稳定 table。有没有更好的方法在这里使用连接?任何帮助表示赞赏。
谢谢
您得到的结果是正确的。您将获得列 analysisid 和 fileid 的 catersian product
。您应该只 select
一栏以避免这种情况。
但是,在连接表时尝试使用 ANSI-SQL join
语法:
select t1.id
, t1.name
, t1.date
, t1.analysisid
, NULL as fileid
from Table_1 t1 JOIN Table_2 t2
ON t2.id = t1.id
and t2.name = t1.name
and t2.date = t2.date
UNION
select t1.id
, t1.name
, t1.date
, NULL
, t2.fileid
from Table_1 t1 JOIN Table_2 t2
ON t2.id = t1.id
and t2.name = t1.name
and t2.date = t2.date
编辑:这是最接近您想要的结果的结果,看起来像
**Desired Table**
ID Name Date AnalysisID FileID
1 Test 8/1/14 50
1 Test 8/1/14 55
1 Test 8/1/14 64
1 Test 8/1/14 67
1 Test 8/1/14 10
1 Test 8/1/14 12
我想加入两个 table 通过日期值加入。以下是我想加入的 table。
**Table 1** **Table2**
ID Name Date AnalysisID ID Name Date FileID
1 Test 8/1/14 50 1 Test 8/1/14 10
1 Test 8/1/14 55 1 Test 8/1/14 12
1 Test 8/1/14 64
1 Test 8/1/14 67
尝试加入时,我将使用以下 sql
为每个 AnalysisID 获取重复的 FileIDselect t1.id
, t1.name
, t1.date
, t1.analysisid
, t2.fileid
from Table_1 t1
, Table_2 t2
where t2.id = t1.id
and t2.name = t1.name
and t2.date = t2.date
**Joined Table**
ID Name Date AnalysisID FileID
1 Test 8/1/14 50 10
1 Test 8/1/14 50 12
1 Test 8/1/14 55 10
1 Test 8/1/14 55 12
1 Test 8/1/14 64 10
1 Test 8/1/14 64 12
1 Test 8/1/14 67 10
1 Test 8/1/14 67 12
我想要的结果如下所示
**Desired Table**
ID Name Date AnalysisID FileID
1 Test 8/1/14 50 10
1 Test 8/1/14 55 12
1 Test 8/1/14 64
1 Test 8/1/14 67
我不确定如何完成此操作。我已经尝试使用 row_number 解决方案删除重复项,但我只是看起来非常不稳定 table。有没有更好的方法在这里使用连接?任何帮助表示赞赏。 谢谢
您得到的结果是正确的。您将获得列 analysisid 和 fileid 的 catersian product
。您应该只 select
一栏以避免这种情况。
但是,在连接表时尝试使用 ANSI-SQL join
语法:
select t1.id
, t1.name
, t1.date
, t1.analysisid
, NULL as fileid
from Table_1 t1 JOIN Table_2 t2
ON t2.id = t1.id
and t2.name = t1.name
and t2.date = t2.date
UNION
select t1.id
, t1.name
, t1.date
, NULL
, t2.fileid
from Table_1 t1 JOIN Table_2 t2
ON t2.id = t1.id
and t2.name = t1.name
and t2.date = t2.date
编辑:这是最接近您想要的结果的结果,看起来像
**Desired Table**
ID Name Date AnalysisID FileID
1 Test 8/1/14 50
1 Test 8/1/14 55
1 Test 8/1/14 64
1 Test 8/1/14 67
1 Test 8/1/14 10
1 Test 8/1/14 12