求mysql 插入数据前判断数据是否存在

suoyuxia 2010-11-05 02:40:00
insert into ta(c1,c2,c3,c4,c5)value('xx',3,4,'ee','ww')
我想在插入之前判断 c1,c2,c3 的('xx',3,4) 是否在ta表已经有了如果有 就不插入。如果无 就插入
----------------------------------

IF NOT EXISTS (SELECT ID FROM ta WHERE ID = 0) THEN
INSERT INTO ta (ID) VALUES (2)
ELSE
BEGIN END
END IF
报错 Error Code : 1064
...全文
143 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2010-11-05
  • 打赏
  • 举报
回复
设置 c1,c2,c3 为主键或者唯一索引。然后使用IGNORE就行了。
suoyuxia 2010-11-05
  • 打赏
  • 举报
回复
o let me try right now
zuoxingyu 2010-11-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wwwwa 的回复:]
要用SP
OR
在C1、C2、C3上建立唯一联合索引,用REPLACE INTO插入
[/Quote]

应该用IGNORE关键字,这个才会丢弃,REPLACE是覆盖了。
zuoxingyu 2010-11-05
  • 打赏
  • 举报
回复
create procedure sp1()
begin
if not exists (select 1 from ta where c1='xx' and c2=3 and c3=4) then
insert into ta(c1,c2,c3,c4,c5)value('xx',3,4,'ee','ww');
end if;
end ;


MYSQL的代码块必须是包含在存储程序里面的,不能单独写。
WWWWA 2010-11-05
  • 打赏
  • 举报
回复
要用SP
OR
在C1、C2、C3上建立唯一联合索引,用REPLACE INTO插入

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧