我尝试插入JobNo
中不在CellNo
的{{1}}和Table_1
列。我写了这个查询&我收到一个错误。
请帮我解决这个问题。
我正在使用SQL Server 2008
View_1
答案 0 :(得分:6)
问题是您的WHERE
子句 - 您无法比较这样的字段集。 您一次只能比较一个字段。
尝试改为:
WHERE View_1.JobNo NOT IN(SELECT JobNo FROM Table_1)
AND View_1.CellNo NOT IN (SELECT CellNo FROM Table_1)
或者,您可以使用单个EXISTS
语句:
INSERT INTO Table_1(ID, JobNo, CellNo)
SELECT View_1.ID, View_1.JobNo, View_1.CellNo
FROM View_1 v
WHERE NOT EXISTS (SELECT 1 FROM Table_1 t
WHERE t.JobNo = v.JobNo
AND t.CellNo = v.CellNo)
答案 1 :(得分:1)
由于您使用的是SQL Server 2008,因此可以使用MERGE
语句:
MERGE INTO Table_1 dst
USING (
SELECT View_1.ID, View_1.JobNo, View_1.CellNo
FROM View_1
) src
ON src.JobNo = dst.JobNo
AND src.CellNo = dst.CellNo
WHEN NOT MACHED THEN INSERT (ID, JobNo, CellNo)
VALUES (src.ID, src.JobNo, src.CellNo)
我个人认为MERGE
声明比INSERT .. SELECT .. WHERE
更简洁。