我正在学习MySQL.在已创建的表中,我添加了一个列(类).现在我想在CLASS列中添加数据.要在一行中添加数据,我使用了以下代码:

update stu SET class="5th" WHERE id = 1;

我希望更新CLASS COLUMN中的所有行,而不是逐个更新每一行,我使用了以下命令

update stu SET 
class="5th" WHERE id = 2
class="6th" WHERE id = 3
class="6th" WHERE id = 4
class="7th" WHERE id = 5
class="7th" WHERE id = 6
class="8th" WHERE id = 7

运行该命令后,显示以下错误

update stu SET class="5th" WHERE id = 2 class="6th" WHERE id = 3 class="6th" WHERE id = 4 class="7th" WHERE id = 5 class="7th" WHERE id = 6 class="8th" WHERE id = 7 Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'class="6th" WHERE id = 3 class="6th" WHERE id = 4 class="7th" WHERE id = 5 class' at line 3 0.000 sec

有人能告诉我如何一次更新行吗?

推荐答案

一次更新通常只能有一个WHERE子句.但是,您可以使用CASE表达式进行更新:

UPDATE stu
SET class = CASE id WHEN 2 THEN '5th'
                    WHEN 3 THEN '6th'
                    WHEN 4 THEN '6th'
                    WHEN 5 THEN '7th'
                    WHEN 6 THEN '7th'
                    WHEN 7 THEN '8th' END
WHERE id BETWEEN 2 AND 7;

Mysql相关问答推荐

加载数据本地infile,字段中有双引号和逗号

SQL:CAST与窗口函数组合导致语法错误

比较2个mysql json数据类型列

无法连接到扩展坞MySQL Unix套接字

MySQL中的where语句会 destruct 全外连接.

如何本地化 MySQL 表中的实体?

即使在某些表中不匹配,如何从 MySQL 中的多个表中 Select 所有记录

优化解析 5000 万行 MySQL 表的请求

Golang Gorm:相同的查询构造不同,抛出不同的结果

MySQL IF() 函数根据指定条件执行代码块

查询以从约会表中获取可用空档

SQL 查找边界之间的值

MySql - 默认情况下主键是唯一的吗?

安装 mysql-python (Windows)

phpMyAdmin - 无法连接 - 无效设置 - 自从我添加了 root 密码 - 被锁定

启用 NO_BACKSLASH_ESCAPES 选项时如何转义文字百分号?

警告:mysqli_connect(): (HY000/1045): Access denied for user 'username'@'localhost' (using password: YES)

将 UTF8 表上的 latin1 字符转换为 UTF8

获取最后一组不同的记录

如何在 MYSQL 中使用 SQL 在两个日期时间值之间减go 并以分钟或秒为单位检索结果?