无法获得连接两个表的唯一值

cjj*_*per 0 sql sql-server join distinct-values

我有 2 个表需要加入并从中选择唯一的行。这是我的数据示例:(有更多列)

tbl1:
MB# MBName  PCCNo_PRI   Primary_IP       PCCNo_SEC          Secondary_IP    ID
100  name    0               10.1.9.10       30              10.1.9.10       1 
103  name3   17              10.1.9.27       47              10.1.9.67       4
403  name13  17              10.1.9.27       47              10.1.9.67       14
Run Code Online (Sandbox Code Playgroud)

表2:

RTU PCC#_PRI    PCC#_SEC    STATION ADDRESS
15  0           30          6
52  12          42          1
53* 17          47          1
54  18          48          1
63  9           39          2
69* 17          47          2
Run Code Online (Sandbox Code Playgroud)

我需要连接这两个表并为 tbl1 中的给定 MB# 获取 tbl2 中的唯一 RTU(s)。查询 =

SELECT t1.MB#,t2.RTU,t2.[Device Manufacturer],t2.PCC#_PRI,t2.PCC#_SEC,t2.[STATION ADDRESS] 
INTO C300_RTU_MASTERBLK_Map
FROM mbm_PCDIMasterBlk_tbl as t1, dbo.WOA_PCC_Conn_tbl as t2
WHERE t1.PCCNo_PRI = t2.PCC#_PRI
Run Code Online (Sandbox Code Playgroud)

我得到了 tbl2 53 和 69(* 以上)的重复行。53 最终有 2 个条目;一到 103 和一个 403(69 相同)。我如何查询到 MB# 的唯一 RTU?

gbn*_*gbn 5

出现重复的行是因为您加入了“17”,每边有 2 行

然后,就目前而言,您不能使用该 SELECT 列表。
你如何决定t1.MB#你想要的 t2 列?

没有我可以看到的辅助 JOIN 列。
所以你能得到的最好的方法是使用 MAX(或 MIN)来选择 403 或 103。

SELECT
   MAX(t1.MB#) AS MB#,
   t2.RTU,t2.[Device Manufacturer],t2.PCC#_PRI,t2.PCC#_SEC,t2.[STATION ADDRESS] 
INTO C300_RTU_MASTERBLK_Map
FROM 
   dbombm_PCDIMasterBlk_tbl as t1
   JOIN
   dbo.WOA_PCC_Conn_tbl as t2 ON t1.PCCNo_PRI = t2.PCC#_PRI
GROUP BY
   t2.RTU,t2.[Device Manufacturer],t2.PCC#_PRI,t2.PCC#_SEC,t2.[STATION ADDRESS] 
Run Code Online (Sandbox Code Playgroud)