加入 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