【问题标题】:How to update specific column without duplicate and like replace the value如何更新特定列而不重复,并喜欢替换值
【发布时间】:2015-01-14 00:09:55
【问题描述】:

我需要更新表格中的一行。
此任务类似于替换表中特定列的值。
我没有使用 PRIMARY KEY 或 UNIQUE KEY(因为我无法在该特定列中插入重复值)。

 +-----+-----+-----+
 | id  |col1 |col2 |
 +-----+-----+-----+
 | 1   | a   | 404 |
 +-----+-----+-----+
 | 2   | b   |  22 |
 +-----+-----+-----+

现在我更新我的表:

   UPDATE table_name SET col2 = 0 WHERE col2 = 404;
   UPDATE table_name SET col2 = 404 WHERE id = 2;       

This result I want. 
 +-----+-----+-----+
 | id  |col1 |col2 |
 +-----+-----+-----+
 | 1   | a   |  0  |
 +-----+-----+-----+
 | 2   | b   | 404 |
 +-----+-----+-----+

为了完成它,我使用了两个查询。 单个查询中是否有任何可能的功能? (要么) 有没有更简单的方法?

【问题讨论】:

    标签: php mysql sql-update


    【解决方案1】:

    正如 Mureinik 已经说过的,您可以使用 case 表达式。最好进行一次更新,特别是如果您当前正在为两个更新创建两个请求。但是,如果由于某种原因执行的顺序很重要,那么您不能像这样将它们放在一起。

    【讨论】:

    • 是的。你是对的@Lajos。现在我正在为我的函数使用 CASE 表达式
    • 那么我认为你应该接受 Mureinik 的回答或我的回答,但如果我是你,我会接受他的回答,因为我的回答只是为他最初的想法增加了一个不错的奖励。
    【解决方案2】:

    您可以使用case 表达式:

    UPDATE table_name 
    SET col2 = CASE col2 WHEN 0 THEN 404 WHEN 404 THEN 2 END
    WHERE col2 IN (2, 404);
    

    但坦率地说,使用两个单独的语句对我来说似乎更清楚。

    【讨论】:

      猜你喜欢
      • 2016-09-24
      • 2011-05-13
      • 2020-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-13
      • 2010-09-24
      • 1970-01-01
      相关资源
      最近更新 更多