我使用PHP和Mysql。
此SQL有效:
INSERT INTO products (id, title, description)
VALUES (10, 'value1', 'value2')
ON DUPLICATE KEY UPDATE
id=10,
title='value25',
description='value2'
我的id
是主键,因此它有效。其他字段是varchars。
我的实际案例有点不同。看看这个:
引入了类型和一起,sku
它是唯一的。
id sku title description type
1 abc one
2 abc two
3 def one
所以我的“真正”键是我想要使用的sku
,而不是独有的。它不能在我的情况下。但与type
一起,它是独一无二的。
请看下面的内容,可能会更清楚:
abc-one // Unique combination
abc-two // Unique combination
def-one // Unique combination
在这种情况下是否可以使用多插入/更新SQL查询?
答案 0 :(得分:1)
如果您将列sku
和type
定义为unique
列,ON DUPLICATE KEY UPDATE
表达式也可以用作例如PrimaryKey
个列。在products
表中只有一个id sku title description type
1 abc one
2 abc two
3 def one
//INSERT
INSERT INTO products (id, sku, type) VALUES (4, 'ghi', 'one') ON DUPLICATE KEY UPDATE ...
//UPDATE dataset with ID=1
INSERT INTO products (id, sku, type) VALUES (1, 'ghi', 'two') ON DUPLICATE KEY UPDATE ...
//UPDATE dataset with sku='abc' and type='one'
INSERT INTO products (id, sku, type) VALUES (5, 'abc', 'one') ON DUPLICATE KEY UPDATE ...
。
示例(基于您的数据):
append()
因此请参阅MySQL文档:https://dev.mysql.com/doc/refman/5.5/en/insert-on-duplicate.html