我有一个MySQL查询,看起来像这样:如何在插入一行时,如果它在更新多行时尚不存在?
UPDATE `Table` SET `Column` =
CASE
WHEN `Option Id` = '1' THEN 'Apple'
WHEN `Option Id` = '2' THEN 'Banana'
WHEN `Option Id` = '3' THEN 'Q-Tip'
END
的我的表目前看起来是这样的:
Option Id | Column
1 | x
2 | x
我想它导致:
Option Id | Column
1 | Apple
2 | Banana
3 | Q-Tip
但它不会插入Q-Tip行。我抬头看了一下INSERT ON DUPLICATE KEY UPDATE
和REPLACE
,但是我找不到一种方法让这些使用CASE
的多行更新工作。我是否必须为每一行编写一个单独的查询才能使其发挥作用,还是有一种很好的方法可以在MySQL中执行此操作?
Option Id
本身不是Key
本身,但它是Primary Key
的一部分。
编辑一些更多的信息:
我编程PHP,而且基本上我存储了用户的阵列。 Option Id
是关键,而Column
是价值。因此,对于纯朴的缘故,我的表可能看起来像:
User Id | Option Id | Value
10 | 1 | Apple
10 | 2 | Shoe
11 | 1 | Czar
...
也就是说用户可以轻松更新数组中的元素,并添加新的,然后POST
阵列到服务器,我想在这种情况下,存储它在桌子上。我上面的查询更新了他们编辑的任何数组元素,但它不会插入新元素。我想知道是否有一个查询,可以从我的数组POST
并将其插入到表中,而无需编写循环并查询每个数组元素。
CASE中的ID与预期的结果不符,拼写错误? –
是的,这是一个错字,感谢您指出:) – Paulpro