4

レコードを挿入しようとしていますが、テーブルにまだ存在していないことを確認したいと思います。

私は試します

INSERT INTO emp (empno, name) 
VALUES(2, 'ram') 
WHERE empno NOT IN (select empno from emp);

エラー「incorrect syntax near where」が表示されます

4

4 に答える 4

3

次のクエリを使用してレコードを 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 
于 2011-11-28T07:11:35.867 に答える
2

ステートメントにWHERE句を含めることはできません。句のみを使用できますINSERTWHERESELECT/UPDATE

MySQL を使用している場合は、次のようなことができます。

insert into emp (empno, name) values(2, 'ram') ON DUPLICATE KEY UPDATE name = 'ram'

そして、unique名前列にインデックスがあれば安全です

于 2011-11-28T06:50:53.913 に答える
1

INSERT IGNORE行が存在する場合は、サイレントに失敗するために使用できます。挿入を試みますが、キーが存在する場合は何もしません。

INSERT IGNORE INTO emp (empno, name) VALUES (2, 'ram')

あなたも見てみたいかもしれませんINSERT ... ON DUPLICATE KEY UPDATE

于 2011-11-28T06:54:43.133 に答える
0

あなたはおそらく次のようなものを探しているでしょう

insert into emp (empno, name) 
SELECT 2 , 'ram'
FROM emp 
WHERE 2 not in (select empno from emp) 

???

于 2011-11-28T06:52:55.980 に答える