使用连接更新表的多行列

时间:2017-07-20 09:10:41

标签: mysql sql join

修改

我尝试了这个查询,但收到了错误:

UPDATE consultation_med
SET consultation_med.given_quantity = 0
FROM
consultation_med
left join consultation on consultation.consultation_id = consultation_med.consultation_id
left join visit on visit.visit_id = consultation.visit_id
 WHERE visit.visit_id='191'
           AND consultation_med.given_quantity = '361'

错误:

  

错误代码:1064。您的SQL语法有错误;检查   手册,对应右边的MySQL服务器版本   语法使用附近' FROM consultation_med离开加入咨询   consultation.consultation_id = c'在第3行

结束编辑

当访问状态consultation_med从{{1}更改时,我需要更新名为given_quantity的表格并将药物的0更改为visit_status } Active

请注意,在访问表中,每个Inactive在下一个表visit_id中可以包含多个consultation_id。并且在每个consultation医生可以提供不同数量的多种药物,因此我们现在对consultation_id表中的每个consultation_id多行进行处理。

以下是表格:

enter image description here

因此,让我们采取已经有4次咨询的consultation_med,并在每次咨询中医生开出1种药物。因此,我们有4行与visit_id=173表中的visit_id=173相关联。数据输入有错误,他需要通过将此次访问的状态更改为consultation_med向管理员发送请求,因此每个给定的药物数量应该回到初始存储,因此我们应该更改{{1每4行到Inactive

我在PHP中尝试了以下查询,但显然只需要一行并更新它:

given_quantity

然后我尝试在更新查询中使用左JOIN:

0

查询仍然错误,另外还有一个错误:

  

错误代码:1175。您正在使用安全更新模式,但您尝试过   更新没有使用KEY列的WHERE的表要禁用安全性   模式,切换首选项中的选项 - > SQL编辑器并重新连接。

2 个答案:

答案 0 :(得分:3)

那个错误" 1175"你需要改变编辑或设置 - > SQL编辑器中的首选项为DISABLE SAFE MODE,或者您应该使用phpmyadmin。

答案 1 :(得分:2)

在MySQL中,您应该将update语句编写为:update-join-set-where

这样的事情:

UPDATE consultation_med
LEFT JOIN consultation on consultation.consultation_id = consultation_med.consultation_id
LEFT JOIN visit on visit.visit_id = consultation.visit_id
SET consultation_med.given_quantity = 0
 WHERE visit.visit_id='191'
           AND consultation_med.given_quantity = '361'

有关详细信息,请访问this链接