sql - 查找重复项
问题描述
我正在尝试进行查找以从表中获取目标 ID(s:
source_id source_name target_name
1 abc def
2 def def
3 ghi jkl
4 jkl mno
我在用:
select a.*,b.source_id as parent_id
from table a
left join table b
on a.source_name=b.target_name;
但是当我申请更大的数据时,我在加入后得到重复。请帮助我解决这里的原因。我需要在加入之前和之后的表的计数(*)与单独插入的 target_id 相同。
谢谢!
解决方案
我推测你的join
条件是倒退的:
select a.*, b.source_id as parent_id
from table a left join
table b
on b.source_name = a.target_name;
在您的source_name
表中看起来是独一无二的,而不是target_name
.
也就是说,你根本不应该依赖name
。您的“目标”或“父”列应参考id
. 因此,您的数据模型看起来可以修复。
推荐阅读
- c++ - 如何在 MSVC 中使用未命名的命名空间时获得可重现的构建?
- haskell - 此“无实例”错误的解决方案是什么?
- c++ - 如何对 std::vector 元素中的对象使用 shared_mutex
- php - 如何在 php 联系表单上使用 htmlspecialchars() 函数(即使用 mail() 函数)
- php - PHP 格式 json 文件(Pretty_Print 和 Compact 一行之间交替)
- drbd - 带有新资源的 DRBD StandAlone
- ruby - Protractor 的查找时间是否与 Selenium 相同,如果是,是否有内存解析选项?
- typescript - 离子3,火力基地| 跳线
- android - 整个应用程序中不存在 Android 海拔高度
- asp.net-core - 为什么我需要将视图和控制器分别部署到 azure web app