MySQL更新列值,否则更新另一列值(单个查询)

时间:2017-07-08 10:42:14

标签: mysql sql database

我想将这两个查询链接在一起,而不是在不同的时间执行它们。

UPDATE `table` SET `column_one` = @value WHERE `column_one_key` = @key LIMIT 1;

以及此查询;

UPDATE `table` SET `column_two` = @value WHERE `column_two_key` = @key LIMIT 1;

这样的东西似乎无法让它发挥作用

UPDATE `table` (SET `column_one` = @value WHERE `column_one_key` = @key) || (SET `column_two` = @value WHERE `column_two_key` = @key) LIMIT 1;

一些其他信息

column_one_key和column_two_key永远不会相同,这就是您可以使用OR的原因。

2 个答案:

答案 0 :(得分:2)

如果您不需要limit(即每个键一个匹配),您可以执行以下操作:

UPDATE `table`
     SET column_one = (CASE WHEN @key = column_one_key THEN @value ELSE column_one END),
         column_two = (CASE WHEN @key = column_two_key THEN @value ELSE column_two END)
    WHERE @key IN (column_one_key, column_two_key);

我认为两个更新更简单。而且,如果你确实需要limit,那么两个更新肯定是一种更简单的方法。

答案 1 :(得分:-1)

尝试这样的事情:

UPDATE `table` SET `column_one` = @value, `column_two` = @value  WHERE `column_one_key` = @key AND `column_two_key` = @key LIMIT 1;