我正在尝试插入一条记录,我想检查它是否已存在于表中。
我试试
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 如果您一次插入一条记录,则以下查询将尽可能地工作......
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 into emp (empno, name)
SELECT 2 , 'ram'
FROM emp
WHERE 2 not in (select empno from emp)
???