Mysql 根据条件更新表

Mysql 根据条件更新表,mysql,Mysql,我必须从设置的一个表(“学生”、“教职员工”)中获取类型,根据结果我必须更新教职员工或学生班级考勤表,我尝试这样做 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 = 'stu

我必须从设置的一个表(“学生”、“教职员工”)中获取类型,根据结果我必须更新教职员工或学生班级考勤表,我尝试这样做

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服务器版本相对应的手册,以了解在“CASE WHEN TYPE=”staff“附近使用的正确语法 第2行时更新员工考勤设置状态=1

如果呢

您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以了解使用near'IF(type=staff, 更新员工出席率 设置雕像=1 1号线的工作人员在哪里


plz帮助解决此问题

您无法在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');

不要将要更新的逻辑表放在SQL中。在周围的编程语言中这样做。在
类型
后需要一个逗号。这似乎与PHP无关。以后请查看。我恐怕无法读取第二个查询…也无法编辑它,因为其他人已经尝试修复它。在SQL中不可能执行动态查询像这样更新查询..最好是创建一个可更新的视图。。