MYSQL:更新现有列中的所有值

标签 mysql database insert

我有一个 mysql 表,如下所示:

>     +-------+-------+-------+--------+---------------+-------------+
>     | score | likes | views | orders | image_ratings | part_number |
>     +-------+-------+-------+--------+---------------+-------------+
>     |     0 |     2 |     0 |      0 |             0 | 1030-507629 |
>     |     0 |     1 |     0 |      0 |             0 | 1070-B265A  |
>     |     0 |     2 |     0 |      0 |             0 | 1070-B26UY  |
>     +-------+-------+-------+--------+---------------+-------------+

我想用值 1、2、3(分别)更新所有分数,所以它看起来像这样:

>     +-------+-------+-------+--------+---------------+-------------+
>     | score | likes | views | orders | image_ratings | part_number |
>     +-------+-------+-------+--------+---------------+-------------+
>     |     1 |     2 |     0 |      0 |             0 | 1030-507629 |
>     |     2 |     1 |     0 |      0 |             0 | 1070-B265A  |
>     |     3 |     2 |     0 |      0 |             0 | 1070-B26UY  |
>     +-------+-------+-------+--------+---------------+-------------+

我想在一条语句中执行此更新,但不知道如何操作。我在想

UPDATE table1 SET score = (1,2,3);

但是这不起作用。

最佳答案

我怀疑这是你打算做的,但如果你想向分数列添加一组递增的值,你可以使用以下语句来实现:

ALTER TABLE table1 ADD COLUMN `temp` int key auto_increment;
UPDATE table1 SET score = temp;
ALTER TABLE table1 DROP COLUMN temp;

如果您只是尝试为多行更新一列而不是基于其他列值,而是使用您的应用程序中的值,则需要创建多个查询。 MYSQL 需要知道哪些列会受到影响,它不能只依赖于它们在表中的存储顺序而没有任何其他值。

如果您试图在一个查询中执行此操作以保持与数据的一致性,我建议使用“START TRANSACTION;”在您的一组更新之前,检查每个更新是否成功,然后运行“提交;”在最后。

关于MYSQL:更新现有列中的所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25192123/

相关文章:

mysql - 如果是我,请选择两个选项;如果是其他用户,请仅选择一个选项

php - 检索错误404

mysql - 给出用户的总订单价格,不重复

c - 堆插入未排序

mysql - 更新触发器不同日期

php mysql INSERT INTO mysql 通过使用注册表单

mysql - 使用mysql进行时间计算和计数

Mysql 查询返回所有行。为什么?

database - 你怎么不加入?

Android:在 MediaStore 中查询期间出现磁盘 I/O 错误