Mysql在非重复键上插入重复键

时间:2016-09-22 13:29:36

标签: mysql sql insert duplicates

我使用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查询?

1 个答案:

答案 0 :(得分:1)

如果您将列skutype定义为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