内部加入2个具有多个连接值的表

时间:2017-09-20 10:20:22

标签: sql asp.net

我有以下表格,其中包含了一些列:

Table 1:
Id RefId PhoneNumber 
1  11    919191
2  11    888888
3  11    919191

Table 2:
Id RefId City    UniqueId
1  11    Mumbai  111
2  11    Pune    222
3  11    Nashik  333

我想要Table1Table2中的几列。两个表中的共同点是RefIdTable2UniqueId,它是Table2的主键。如果我基于RefId进行内部联接,我将获得9条记录,但我想要3.我如何得到它?

这是我的问题:

SELECT T1.PhoneNumber,T2.City,T2.UniqueId,T2.RefId
FROM Table1 T1
INNER JOIN Table2 T2
ON T1.RefId = T2.RefId 

1 个答案:

答案 0 :(得分:0)

如果ID也用于加入

SELECT t1.Id, t1.RefId, t1.PhoneNumber, t2.City, t2.UniqueId
FROM Table1 t1
INNER JOIN Table2 t2 
ON t1.Id = t2.Id
AND t1.RefId = t2.RefId

如果随机生成了ID,你可能不应该加入它们。

如果ID是随机的,但所有PhoneNumbers都在同一个地方,那么你可以选择最小值PhoneNumber(或Max)

SELECT t2.RefId, t1.PhoneNumber, t2.City, t2.UniqueId
FROM Table2 t2
INNER JOIN (
    SELECT RefId, MIN(PhoneNumber) AS PhoneNumber
    FROM Table1
    GROUP BY RefId
    ) t1 ON t1.RefId = t2.RefId
相关问题