レコードを挿入しようとしていますが、テーブルにまだ存在していないことを確認したいと思います。
私は試します
INSERT INTO emp (empno, name)
VALUES(2, 'ram')
WHERE empno NOT IN (select empno from emp);
エラー「incorrect syntax near where
」が表示されます
レコードを挿入しようとしていますが、テーブルにまだ存在していないことを確認したいと思います。
私は試します
INSERT INTO emp (empno, name)
VALUES(2, 'ram')
WHERE empno NOT IN (select empno from emp);
エラー「incorrect syntax near where
」が表示されます
次のクエリを使用してレコードを emp に挿入できます。一度に 1 つのレコードを挿入する場合、次のクエリは可能な限り最適に機能します ...
insert into emp (empno,empname)
select distinct empno,empname
from ( 2 empno, 'ram' empname ) as a
where a.empname not in ( select empname from emp )
複数のレコードを挿入したい場合は、以下のクエリを見つけてください
insert into emp (empno,empname)
select max(empno),empname
from ( select 2 empno, 'ram' empname
union
select 3 empno, 'ram1' empname
union
select 4 empno, 'ram' empname
) as a
where a.empname not in ( select empname from emp )
group by empname
ステートメントにWHERE
句を含めることはできません。句のみを使用できますINSERT
WHERE
SELECT/UPDATE
MySQL を使用している場合は、次のようなことができます。
insert into emp (empno, name) values(2, 'ram') ON DUPLICATE KEY UPDATE name = 'ram'
そして、unique
名前列にインデックスがあれば安全です
INSERT IGNORE
行が存在する場合は、サイレントに失敗するために使用できます。挿入を試みますが、キーが存在する場合は何もしません。
INSERT IGNORE INTO emp (empno, name) VALUES (2, 'ram')
あなたも見てみたいかもしれませんINSERT ... ON DUPLICATE KEY UPDATE
あなたはおそらく次のようなものを探しているでしょう
insert into emp (empno, name)
SELECT 2 , 'ram'
FROM emp
WHERE 2 not in (select empno from emp)
???