【发布时间】:2011-12-30 23:29:02
【问题描述】:
我正在尝试使用左连接来连接两个表。并且结果集必须只包含“右”连接表中的第一条记录。
假设我有两个表 A 和 B,如下所示;
表“A”
code | emp_no
101 | 12222
102 | 23333
103 | 34444
104 | 45555
105 | 56666
表“B”
code | city | county
101 | Glen Oaks | Queens
101 | Astoria | Queens
101 | Flushing | Queens
102 | Ridgewood | Brooklyn
103 | Bayside | New York
预期输出:
code | emp_no | city | county
101 | 12222 | Glen Oaks | Queens
102 | 23333 | Ridgewood | Brooklyn
103 | 34444 | Bayside | New York
104 | 45555 | NULL | NULL
105 | 56666 | NULL | NULL
如果你注意到我的结果在左连接后只有一个匹配的记录“B”(不管匹配什么记录)(它是一对多映射)
我需要从表 B 中选择第一个匹配的记录并忽略所有其他行。
请帮忙!
谢谢
【问题讨论】:
-
行在 SQL 中没有隐含的顺序。你如何决定哪一个是“第一个匹配的记录”?
-
如果我们在 B 表上按城市订购 astoria 成为第一条记录,我们如何知道哪个是“第一”
-
对于代码 101,匹配的行可以是 3 行中的任何一行。选择哪一行并不重要。因此,结果集中可能是 Glan Oaks 或 Astoria 或 Flushing。