【发布时间】:2016-12-20 17:31:04
【问题描述】:
我有一个应该根据唯一 ID 连接到另一个表的表。如果我这样做 LEFT OUTER JOIN ON 我会有重复的。如果我将DISTINCT 放入我的SELECT 中,我将获得正确数量的记录。然后,如果我在表中包含我所做的LEFT OUTER JOIN 中的任何字段,在这种情况下,我会再次得到重复项。这是我的查询:
SELECT DISTINCT
Table1.fname,
Table1.lname,
Table2.address
FROM Table1
LEFT OUTER JOIN Table2
ON Table2.user_id = Table1.userid
在上面的示例中,我得到了重复,我也尝试过这样做:
LEFT OUTER JOIN (
SELECT user_id
FROM Table2
GROUP BY user_id
) AS t2 ON Table1.user_id = t2.user_id
这给了我正确数量的记录,但我需要第二个表中的一些额外列,在我包含额外列之后,我再次得到重复,例如:
LEFT OUTER JOIN (
SELECT user_id, address
FROM Table2
GROUP BY user_id, address
) AS t2 ON Table1.user_id = t2.user_id
我想知道我是否遗漏了什么,或者有更好的方法来处理这类问题。如果有人看到或知道更好的解决方案,请告诉我。
【问题讨论】:
-
表2的主键是什么?
-
您从 DISTINCT 获得了带有这些附加列的重复项,因为它们具有多个值。我们无法告诉您如何修复它,除非您可以告诉我们您希望从这些列中获得多个值中的哪一个。
-
我们能看到一些数据吗?
标签: sql-server join left-join distinct