【发布时间】:2016-12-09 10:17:22
【问题描述】:
我有两张桌子。
- 表包含 A 列(类型号、主键)的记录。
- 表包含具有 A、B 列(类型编号)的记录。第二个代表映射表。
有什么问题?
我需要根据映射表 2 重新映射表 1 中的所有记录,特别是 A 列到 B 列。 但问题是表 1 包含的记录也包含表 2 中的值 B(在 A 列中)。这意味着当我重新映射表 1 时,可能会出现唯一性问题,因为表 1 中的列 A 是主键。
我已尝试选择必须重新映射的所有记录的计数,但我不知道我的查询是否正确。
这是这两张表:
select * from temp_1;
select * from temp_2;
这是带有计数的选择:
SELECT count(*) FROM temp_1 T1
WHERE EXISTS (SELECT 1 FROM temp_2 T2 WHERE T2.a = T1.a
and not exists (select 1 from temp_1 T1b where T2.b = T1b.a));
样本数据:
表 1:
1、2、3、4、5、40、50
表 2:
1-11、2-22、3-33、4-40、5-50
重映射后的结果表1:
11, 22, 33, 4, 5, 40, 50 剩余问题值
如果你理解我的话,这些粗体标记的值就是问题值。
【问题讨论】:
-
您能否更新您的问题,告诉我们您使用的是哪个版本的 SQL(例如 MySQL、SQL Server 等)以及示例数据?
-
@TimBiegeleisen 标题为 ORACLE。
-
@FDavidov 抱歉...我没有看到任何标签
-
@Luke 。 . .我想我理解这个问题,但样本数据和期望的结果会有所帮助。
-
我在我的问题中添加了示例数据