在INSERT查询中传递列

时间:2011-09-29 20:56:16

标签: mysql insert

我想更新并插入(在1个查询中)我的表。我有1个新行和2个旧记录。 我使用此查询(topic):

INSERT INTO table (id, title, url) VALUES (1, "test", "http://"), (2, [it is an old record. I don't want to change its title], "https://"), (3, "helloworld", "mms://") ON DUPLICATE KEY UPDATE title = VALUES(title), url = VALUES(url)

我不想更改第二条记录(id = 2title列,但是如果我在逗号后添加NULLDEFAULTtitletitle将更改为NULL(如果我在逗号后面没有任何内容,则会发生错误)

我该怎么办?我应该使用2个或更多查询吗?

谢谢。

2 个答案:

答案 0 :(得分:0)

你的目标不是100%明确,但你能不能嵌套一个SELECT,它会取回旧标题代替方括号中的文字?

答案 1 :(得分:0)

您可以使用以下内容:

INSERT INTO table (id, title, url) VALUES (1, "test", "http://"), (2, "", "https://"), (3, "helloworld", "mms://") ON DUPLICATE KEY UPDATE title = IF(VALUES(title)="",title,VALUES(title)), url = VALUES(url)