【问题标题】:Update multiple rows for 2 columns in MySQL更新 MySQL 中 2 列的多行
【发布时间】:2012-03-10 05:12:34
【问题描述】:

关注Update multiple rows in 1 column in MySQL

更新 2 列中的多行最有效的查询是什么?

UPDATE example_table SET variable1 = 12 WHERE id=1;
UPDATE example_table SET variable2 = 'blue' WHERE id=1;

UPDATE example_table SET variable1 = 42 WHERE id=2;
UPDATE example_table SET variable2 = 'red' WHERE id=2;

UPDATE example_table SET variable1 = 32 WHERE id=3;
UPDATE example_table SET variable2 = 'yellow' WHERE id=3;

使用case 似乎是最有效的,但是如果一次设置多个值,我该怎么做呢?

【问题讨论】:

    标签: mysql sql case sql-update


    【解决方案1】:

    有些不需要把这个标志放在 id '' 例如:'id' 你可以把它留空......就像

    UPDATE example_table
    SET variable1 = (CASE
        WHEN id = 1 THEN 12
    

    【讨论】:

      【解决方案2】:

      如果您有一个名为 categories 的表,并说两列是 display_ordertitle,您将执行以下操作:

      UPDATE categories
      SET display_order = CASE id
          WHEN 1 THEN 32
          WHEN 2 THEN 33
          WHEN 3 THEN 34
      END,
      title = CASE id
          WHEN 1 THEN 'New Title 1'
          WHEN 2 THEN 'New Title 2'
          WHEN 3 THEN 'New Title 3'
      END
      WHERE id IN (1,2,3)
      

      【讨论】:

        【解决方案3】:

        我再次认为 CASE 是解决方案。这个想法是为每个变量使用单独的 CASE 语句。比如:

        UPDATE `example_table`
        SET `variable1` = (CASE
            WHEN `id` = 1 THEN 12
            WHEN `id` = 2 THEN 42
            WHEN `id` = 3 THEN 32
            END),
        `variable2` = (CASE
            WHEN `id` = 1 THEN 'blue'
            WHEN `id` = 2 THEN 'red'
            WHEN `id` = 3 THEN 'yellow'
            END);
        

        希望对你有帮助!

        【讨论】:

          【解决方案4】:

          这样的事情可能是你想做的:

          UPDATE example_table SET variable1 = 42,variable2 = 'red' WHERE id=2;
          

          【讨论】:

          • 感谢 Aleroot,但您的回答不涉及更新多行,只是多列。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-04-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多