MySQL 怎么使用SQL语句(if else),避免重复插入?

已邀请:

张三俗

赞同来自: brean

Sql代码:
INSERT INTO table(column1,column2,column3 ...columnN)
SELECT value1,value2,value3 ...valueN
FROM dual
WHERE NOT EXISTS(
      SELECT *
      FROM table
      WHERE value = ?
);
dual是为了构建查询语句而存在的表,Oracle中很常见,配合INSERT ... SELECT构建成我们需要的表,并指定了数据项. 
EXISTS通过这个判断是否存在的函数,就免去了我们做IF-ELSE的冗繁操作.

例: 
Sql代码:
            INSERT INTO content (
                detail,
                status,
                beginTime,
                endTime) 
            SELECT
                @detail,
                1,
                NULL,
                NULL
            FROM DUAL
             WHERE NOT EXISTS(
                 SELECT contentId 
                 FROM content 
                 WHERE detail=@detail);
@detail是要存入的内容,这里对内容进行了检索,如果要这么做,最好对该字段做唯一约束,或加索引。  
省掉了IF-ELSE,在iBatis配置一下就ok了

 
 

铁伙伴

赞同来自: brean

Replace into 语法
 

要回复问题请先登录注册