2

fromにない列JobNoと列を挿入しようとしています。このクエリを書きましたが、エラーが発生します。CellNoTable_1View_1

これを修正するのを手伝ってください。

SQL Server 2008 を使用しています

INSERT INTO Table_1(ID, JobNo, CellNo)
   SELECT View_1.ID, View_1.JobNo, View_1.CellNo
   FROM View_1
   WHERE View_1.JobNo 
   AND View_1.CellNo NOT IN (SELECT JobNo, CellNo FROM Table_1)
4

2 に答える 2

6

問題はあなたのWHERE句です-このようなフィールドのセットを比較することはできません。 一度に 1 つのフィールドのみを比較できます。

代わりに試してください:

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)
于 2012-04-30T13:47:31.717 に答える
1

MERGESQL Server 2008 を使用しているため、次のステートメントを利用できます。

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

于 2012-04-30T13:50:21.683 に答える