-2

我必须编写一个查找丢失数据的查询,但我希望它在没有任何子查询或嵌套 SELECT 的情况下编写(它找到丢失的数据并将其从表中插入到缺少数据的表中)。

查询是:

INSERT INTO Personal_tbl 
    SELECT * 
    FROM PersonalView 
    WHERE PID NOT IN (SELECT PID FROM Personal_tbl)
4

2 回答 2

0

您通常会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
于 2020-12-28T12:26:31.383 回答
0
INSERT INTO Personal_tbl
SELECT Pv.*
FROM PersonalView Pv
INNER JOIN Personal_tbl pt ON  pt.PID <> Pv.PID
于 2020-12-28T12:50:19.647 回答