使用多个值SQL更新单个列

时间:2017-05-29 05:35:12

标签: mysql

我有下表:

id | name | address| code
--------------------------
1  |   ABC| XYZ    |
2  |   DEF| GHI    |
3  |   JKL| MNO    |
4  |   PQR| STU    |
5  |   VWW| QWE    |

我需要更新表并在列代码中插入值。 我有代码

UPDATE mytable
SET    code= 
   CASE id
        WHEN 1 THEN 'ASD'
        WHEN 2 THEN 'FGH'
        WHEN 3 THEN 'JKL'
        WHEN 4 THEN 'QWE'
        WHEN 5 THEN 'BAR'
   END
WHERE  id IN (1,2,3,4,5);

我可以在单个查询中执行此操作,因为我必须更新14,000条记录。 谢谢!

3 个答案:

答案 0 :(得分:0)

使用以下格式的UPDATE查询:

UPDATE mytable SET code = CASE WHEN id = 1 THEN 'ASD'
                               WHEN id = 2 THEN 'FGH'
                               WHEN id = 3 THEN 'JKL' 
                               WHEN id = 4 THEN 'QWE'
                               WHEN id = 5 THEN 'BAR' ELSE code END

答案 1 :(得分:0)

我认为这就是你所需要的

UPDATE mytable
SET    code= 
CASE round(rand()*5)
    WHEN 1 THEN 'ASD'
    WHEN 2 THEN 'FGH'
    WHEN 3 THEN 'JKL'
    WHEN 4 THEN 'QWE'
    WHEN 5 THEN 'BAR'
    WHEN 0 THEN 'ASD'
END

答案 2 :(得分:0)

创建包含CSV列和id列的code文件。然后将CSV导入临时表。

<强>查询

create temporary table tempTable (id int, code varchar(255));

load data infile 'csv_file_path' into table tempTable ;

然后使用带有临时表的JOIN更新您的表。

update myTable t1
join tempTable t2
on t1.id = t2.id
set t1.code = t2.code;

之后,只需删除临时表。

drop temporary table if exists tempTable;