2013-02-09 123 views
2

我通常会以编程方式执行此操作,但今天我处于学习心境中......我环顾四周,但没有发现任何与我的问题完全相同的内容。更新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 

想象,我想物品状态UPDATE1如果item_person存在关联......

  • 有一个MySQL查询,可以处理呢?

  • 有一个MySQL查询,如果一个协会确实在item_person不存在可以做一个UPDATE

回答

3
-- 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 
+0

太棒了。我太过于练习,我忘记了需要一个JOIN。 – 2013-02-09 21:43:19

0
  1. UPDATE项设置ITEM_STATUS = 1,其中存在item_person.item = item.item_id
  2. UPDATE项设置ITEM_STATUS = 1,其中不存在item_person.item = item.item_id

注,这两个查询都没有经过测试,因为我没有从这里访问mysql,并且您还没有给出fiddle。如果您需要帮助调试,请随时留下评论。

相关问题