mysql - 更新多个表中的行和

标签 mysql

我正在处理一个项目,我需要在查询中更新 2 个表。

我在做这个

UPDATE ward_beds a, ipd_patient_list b 
SET 
a.occupation_status = 'empty', 
b.patient_status = 'Discharged' 
WHERE 
a.ward_id = b.ward_id AND b.patient_id = '4' 
AND 
b.appointment_id = '6' AND b.ward_id = '1' 

到目前为止一切正常,现在我想更新一下

b.patient_status = 'Discharged'

在所有匹配行中的最后一行。我试着把这个

ORDER BY b.row_id DESC LIMIT 1

但它显示

#1221 - Incorrect usage of UPDATE and ORDER BY

错误。我应该怎么做?

最佳答案

你不能在这种更新中使用限制 但您可以使用子查询搜索正确的 ID 并加入其他表

  UPDATE ward_beds a
  INNER JOIN (
    select  ward_id, max(row_id)  last_id 
    from ipd_patient_list
    group by ward_id
  ) t on t.ward_id = a.ward_id
  INNER JOIN ipd_patient_list b  ON a.ward_id = b.ward_id
        AND b.patient_id = '4' 
          AND b.appointment_id = '6' 
            AND b.ward_id = '1' 
              AND b.row_id = t.last_id
SET a.occupation_status = 'empty', 
    b.patient_status = 'Discharged' 

关于mysql - 更新多个表中的行和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49109961/

相关文章:

mysql - 优化mysql多字段查询

mysql - 禁止为多个模型创建对象

MySQL - 退出存储过程

mysql - Select 查询检查的行多于表中现有的行

PHP 为什么我的 INNER JOIN 返回错误?

mysql - 如何根据单次更新查询的另一列中的值更新一列中的值?

mysql - 使用 double 类型时, double 在 mysql 中无法正常工作

mysql - 如何从另一个表的 2 个不同表中获取总和

java - MySQL连接到数据库到java

MySQL 长查询进度监控