MYSQL ON DUPLICATE KEY插入别的东西

我知道MYSQL中的INSERT ... ON DUPLICATE KEY UPDATE语法,但是有没有办法插入别的东西呢?更具体地讲,说我有:MYSQL ON DUPLICATE KEY插入别的东西

INSERT INTO main (a,b,c,d,e) VALUES ('$a','$b','$c','$d','$e'); 

,其中列“一”是独一无二的,包含了一个任意10位数的字母数字字符串,我是在客户端的电子邮件发送到检索数据链路的公共查询字符串中使用从数据库。 我知道有可能会产生相同的字符串,因为有62^10个可能性,但想象一下$a包含一个已经存在的10位字符串。我在$a2中生成了第二个字符串作为备份,现在我想修改上面的插入语句,如果$a已经存在可以使用$a2。所以理想情况下我正在寻找类似的东西:

INSERT INTO main (a,b,c,d,e) VALUES ('$a','$b','$c','$d','$e') ON DUPLICATE KEY USE $a2 INSTEAD OF $a; 

这怎么办?据我所知ON DUPLICATE KEY INSERT something else语法不存在。此外,我的条目列表长约20-25个键值对,所以理想情况下我正在寻找只插入不同“a”而不必重写整个键值对列表的内容。 谢谢。

回答:

你会做:

INSERT INTO main (a, b, c, d, e) 

VALUES ('$a', '$b', '$c', '$d', '$e')

ON DUPLICATE KEY UPDATE a = $a2;

编辑:

如果要添加新行,你可以这样做:

INSERT INTO main (a, b, c, d, e) 

SELECT (CASE WHEN EXISTS (SELECT 1 FROM main m WHERE x.a = m.a)

THEN $a2 ELSE x.a

END) as a,

b, c, d, e

FROM (SELECT '$a' as a, '$b' as b, '$c' as c, '$d' as d, '$e' as e) x;

回答:

您还可以使用REPLACE INTO。如果您的表的主键匹配,则会替换旧数据,否则它将作为新行插入。

以上是 MYSQL ON DUPLICATE KEY插入别的东西 的全部内容, 来源链接: utcz.com/qa/265182.html

回到顶部