mysql - 根据条件更新表
问题描述
我必须从一个设置的表中获取类型(“student”,“staff'”),根据结果我必须更新staff或student_class_attendance表我试试这个
SELECT TYPE
CASE WHEN TYPE = 'staff' THEN
UPDATE staff_attendance SET statues = 1 WHERE staff_id = (SELECT type_id FROM rfid_details WHERE rfid_no = '124' )
WHEN TYPE = 'student' THEN
UPDATE student_class_attendance SET statues = 1 WHERE student_id = (SELECT type_id FROM rfid_details WHERE rfid_no = '124' )
END
FROM rfid_details WHERE rfid_no = '124'
并且
SELECT TYPE IF(TYPE = staff,
UPDATE staff_attendance
SET statues = 1
WHERE staff_id =
SELECT type_id
FROM rfid_details
WHERE rfid_no = '124' ,UPDATE student_class_attendance
SET statues = 1
WHERE student_id=
SELECT type_id
FROM rfid_details
WHERE rfid_no = '124' ) FROM rfid_details WHERE rfid_no = '124'
但显示
您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 2 行的“CASE WHEN TYPE = 'staff' THEN UPDATE staff_attendance SET Stats = 1 WHER”附近使用正确的语法
如果
您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 1 行的 'IF(type = staff, update staff_attendance SET states = 1 WHERE staff_i' 附近使用正确的语法
请帮助解决这个问题
解决方案
您根本无法在 select 语句中进行更新。您可以尝试以下方法:
UPDATE staff_attendance SET statues = 1 WHERE staff_id = (SELECT type_id FROM rfid_details WHERE rfid_no = '124' and type = 'staff');
UPDATE student_class_attendance SET statues = 1 WHERE student_id = (SELECT type_id FROM rfid_details WHERE rfid_no = '124' and type = 'student');
推荐阅读
- apache-kafka - Kafka apache + 如何跨 jbod 重新平衡主题
- c++ - Apple Clang 和 Homebrew 中支持 OpenMP 的 Clang 之间有区别吗?
- git - Git 无法解析外部主机名
- .net-core - 未处理异常上的 MessageLockLostException 与 Azure 服务总线上 MassTransit 的 ConfigureDeadLetterQueueErrorTransport 结合使用
- javascript - 如何在 LeafletJS 标记中添加一个按钮来运行代码?
- python - 在 Django 中,导入导出模块不适用于我的用户模型
- javascript - 导入财务图表
- python - 在整行中的所有列上复制/复制第一个值(A 列)
- haskell - Haskell 中的非二叉树如何工作?
- python - Ping 命令 - 检查返回值