更新MySQL表中的多个行,基于另一个表中的id存在
问题描述:
我通常会以编程方式执行此操作,但今天我处于学习心境中......我环顾四周,但没有发现任何与我的问题完全相同的内容。更新MySQL表中的多个行,基于另一个表中的id存在
我有两个表item
,person
,第三个包含关联item_person
。不是每个人都有一个项目,所以协会并不总是存在。现在,我想在item
表中维护一个status
列,其中部分基于项目是否与某个人相关联。所以......
Table: item
item_id
description
status
Table: person
person_id
name
Table: item_person
item_id
person_id
想象,我想物品状态UPDATE
到1
如果item_person
存在关联......
有一个MySQL查询,可以处理呢?
有一个MySQL查询,如果一个协会确实在
item_person
不存在可以做一个UPDATE
。
答
-- If the association exists...
update item i
join item_person ip
on ip.item_id = i.item_id
set i.status = 1
-- If the association does not exist...
update item i
left join item_person ip
on ip.item_id = i.item_id
set i.status = 0
where ip.item_id is null
答
- UPDATE项设置ITEM_STATUS = 1,其中存在item_person.item = item.item_id
- UPDATE项设置ITEM_STATUS = 1,其中不存在item_person.item = item.item_id
注,这两个查询都没有经过测试,因为我没有从这里访问mysql,并且您还没有给出fiddle。如果您需要帮助调试,请随时留下评论。
太棒了。我太过于练习,我忘记了需要一个JOIN。 – 2013-02-09 21:43:19