jquery - 如何在检查缺失数据时不使用子查询
问题描述
我必须编写一个查找丢失数据的查询,但我希望它在没有任何子查询或嵌套 SELECT 的情况下编写(它找到丢失的数据并将其从表中插入到缺少数据的表中)。
查询是:
INSERT INTO Personal_tbl
SELECT *
FROM PersonalView
WHERE PID NOT IN (SELECT PID FROM Personal_tbl)
解决方案
您通常会not exists
用于此类任务:
insert into personal_tbl (...) -- enumerate the target columns here
select * -- and here as well
from personalview pv
where not exists (select 1 from personal_tbl pt where pt.pid = pv.pid)
我不明白你为什么不想为此使用子查询。使用 上的索引personal_tbl(pid)
,这应该是一种有效的方法。但是,如果您愿意,可以使用 a 实现相同的逻辑left join
:
insert into personal_tbl (...)
select pv.*
from personalview pv
left join personal_tbl pt on pt.pid = pv.pid
where pt.pid is null
推荐阅读
- javascript - 'Component' 未定义 no-undef 搜索关键字以了解有关每个错误的更多信息
- powershell - 获取 terraform 的输出 powershell 功能
- c - 如何将 UTF-8 字符串写入 Windows 控制台?
- amcharts - amchart v3 甘特图值轴固定间隔
- php - Stripe 没有显示这样的令牌:tok_xxxxxxx 用于目的地费用
- django - Django如何在模板中做model1.model2_set.all()?
- php - 命令拒绝、允许、拒绝来自 IP 不阻止 IP 地址,不工作
- ios - SwiftUI NavigationLink 会自动弹出,这是出乎意料的
- mongodb-java - 设置更新提示以使用索引
- javascript - 反应上下文 API