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 如果您一次插入一条记录,则以下查询将尽可能地工作......

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

你不能WHEREINSERT语句有子句,你WHERE只能有子句SELECT/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 回答