【发布时间】:2016-09-30 18:59:08
【问题描述】:
我有两张桌子。
Table 1
+----+--------+
| Id | Column |
+----+--------+
| 1 | 23 |
+----+--------+
| 2 | 34 |
+----+--------+
| 3 | 99 |
+----+--------+
Table 2
+----+--------+
| Id | Column |
+----+--------+
| 10 | 1 |
+----+--------+
| 11 | 1 |
+----+--------+
| 21 | 2 |
+----+--------+
| 33 | 3 |
+----+--------+
我想把这些表组合起来得到
Table 3 (Desired)
+--------+--------+
| Column | Column |
+--------+--------+
| 10 | 23 |
+--------+--------+
| 11 | 23 |
+--------+--------+
| 21 | 34 |
+--------+--------+
| 33 | 99 |
+--------+--------+
我知道如何得到这个:
Table 3 (Actual)
+--------+--------+
| Column | Column |
+--------+--------+
| 10 | 23 |
+--------+--------+
| 11 | null |
+--------+--------+
| 21 | 34 |
+--------+--------+
| 33 | 99 |
+--------+--------+
但是当行有重复的 Id 列时,第一个是正确的值,并且 其余的始终为 NULL。
我必须生成表 3 的查询是
SELECT table2.id, table1.Column
FROM table2
LEFT JOIN (SELECT .... ) as table1 ON table1.id = table2.Column
如何加入表以获得正确版本的表 3?
【问题讨论】:
-
欢迎来到 Stack Overflow!请通过添加适当的标记(Oracle、SQL Server、MySQL 等)来指定您要定位的 RDBMS。可能有一些答案利用了不受普遍支持的语言或产品功能。此外,通过使用特定的 RDBMS 对其进行标记,您的问题可能会受到更适合回答的人的关注。
-
在你想要的结果中:
10 -------- 23的行不应该是11 -------- 23 -
对我来说,您的查询工作正常。 NULL 值表明,Table2 有一行 ID = 10 和 Column = Table1.ID 中不存在的值
-
我弄错了 11 -------- 23 11 -------- 23