SQL加入returns这么多行
SQL join returns so many rows
我有两个 table:警报(22078 行)和人口统计(1857)。警报包含 2 列:AlertID(Unique) 和 EndUserID。每个 EndUserID 可以有多个 AlertID。人口统计 table 包含 2 列:EndUserID(唯一)和 PIN(唯一且为空)。
AlertID
EndUserID
101
119
134
119
293
139
89
200
375
119
500
257
EndUserID
PIN
119
24001
500
23045
200
25901
1000
Null
439
20018
78
25457
我想从人口统计中获取警报 table 中每个 AlertID 的 PIN。它应该是 workbench 中的简单连接查询,例如:
Select a.AlertId, a.EndUserID, b.PIN
from alerts a join Demographics b
on a.EndUserID = a.EndUserID;
我的输出应该是这样的:
AlertID
EndUserID
PIN
101
119
24001
134
119
24001
293
139
Null
89
200
25901
375
119
24001
500
257
21600
但是,我得到了很多行,例如 EndUserID 119 返回了 300 多条具有不同 PIN 的记录,尽管它在警报中只有 59 个实例,在人口统计中只有 1 个。这很奇怪而且我不确定我犯了什么错误。
您正在将警报 table 中的所有行与人口统计中的所有行连接起来,您连接列的别名有误:
Select a.AlertId, a.EndUserID, b.PIN
from alerts a join Demographics b
on a.EndUserID = b.EndUserID; -- < here
我有两个 table:警报(22078 行)和人口统计(1857)。警报包含 2 列:AlertID(Unique) 和 EndUserID。每个 EndUserID 可以有多个 AlertID。人口统计 table 包含 2 列:EndUserID(唯一)和 PIN(唯一且为空)。
AlertID | EndUserID |
---|---|
101 | 119 |
134 | 119 |
293 | 139 |
89 | 200 |
375 | 119 |
500 | 257 |
EndUserID | PIN |
---|---|
119 | 24001 |
500 | 23045 |
200 | 25901 |
1000 | Null |
439 | 20018 |
78 | 25457 |
我想从人口统计中获取警报 table 中每个 AlertID 的 PIN。它应该是 workbench 中的简单连接查询,例如:
Select a.AlertId, a.EndUserID, b.PIN
from alerts a join Demographics b
on a.EndUserID = a.EndUserID;
我的输出应该是这样的:
AlertID | EndUserID | PIN |
---|---|---|
101 | 119 | 24001 |
134 | 119 | 24001 |
293 | 139 | Null |
89 | 200 | 25901 |
375 | 119 | 24001 |
500 | 257 | 21600 |
但是,我得到了很多行,例如 EndUserID 119 返回了 300 多条具有不同 PIN 的记录,尽管它在警报中只有 59 个实例,在人口统计中只有 1 个。这很奇怪而且我不确定我犯了什么错误。
您正在将警报 table 中的所有行与人口统计中的所有行连接起来,您连接列的别名有误:
Select a.AlertId, a.EndUserID, b.PIN
from alerts a join Demographics b
on a.EndUserID = b.EndUserID; -- < here