我想更新并插入(在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 = 2
)title
列,但是如果我在逗号后添加NULL
,DEFAULT
或title
,title
将更改为NULL
(如果我在逗号后面没有任何内容,则会发生错误)
我该怎么办?我应该使用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)