条件付きで挿入する構文はどうですか? 例: 挿入したい値がまだテーブルにないかどうかを確認しますか? (列がnullになる可能性があることを考慮して)
質問する
113 次
5 に答える
2
あなたの説明は非常に簡潔ですが、MERGE
ステートメントが必要なようです。
http://technet.microsoft.com/en-us/library/bb510625.aspx
データが存在するかどうかに基づいて挿入/更新/削除するために使用できる、またはすべてが 1 つのステートメントに含まれていない。
于 2013-08-15T14:40:07.557 に答える
2
挿入したい値が変数であるとします。
使用できますIF NOT EXISTS
:
IF NOT EXISTS (SELECT * FROM Table1 WHERE Col1 = @Val1 AND Col2 = @Val2)
INSERT INTO Table1 (Col1, COl2) VALUES (@Val1, @Val2)
またはあなたが使用することができSELECT..WHERE
ますEXISTS
INSERT INTO Table1 (Col1, COl2)
SELECT @Val1, @Val2
WHERE NOT EXISTS (SELECT * FROM Table1 WHERE Col1 = @Val1 AND Col2 = @Val2)
またはおそらくさらにいくつかの方法(NOT IN、LEFT JOIN、MERGE ...)
于 2013-08-15T14:44:17.330 に答える
1
たとえば、左結合または右結合を使用できます
WITH SourceTable AS
(
SELECT
*
FROM ( VALUES
('A', 1)
,('A', 2)
,('B', 1)
,('C', 10)) nTable(nCol1, nCol2)
)
SELECT
*
INTO #SourceTable
FROM SourceTable;
WITH NewRows AS
(
SELECT
*
FROM ( VALUES
('A', 2)
,('A', 3)
,('B', 1)
,('C', 11)) nTable(nCol1, nCol2)
)
INSERT #SourceTable
(nCol1
,nCol2)
SELECT
n.nCol1
,n.nCol2
FROM #SourceTable s
RIGHT JOIN NewRows n
ON s.nCol1=n.nCol1
AND s.nCol2=n.nCol2
WHERE s.nCol1 IS NULL;
于 2013-08-15T14:49:27.923 に答える
0
このようなことを意味しますか?
insert into t(col)
select 'value'
where not exists (select 1 from t where col = 'value');
ただし、一意のインデックス、フィルター処理されたインデックス、または外部キー制約を使用して、データの整合性を維持することをお勧めします。
于 2013-08-15T14:42:48.460 に答える