基于另一个表中的id存在,更新MySQL表中的多行

时间:2013-02-09 21:29:27

标签: mysql

我通常会以编程方式进行此操作,但今天我的学习心情很好......我环顾四周,但没有发现任何与我的问题完全相符的事情。

我有两个表itemperson,第三个表包含关联item_person。不是每个人都有一个项目,因此关联并不总是存在。现在,我想在status表中维护item列,部分取决于项目是否与某个人相关联。所以......

Table: item
    item_id
    description
    status

Table: person
    person_id
    name

Table: item_person
    item_id
    person_id

想象一下,如果UPDATE中存在关联,我想1项状态为item_person

  • 是否有一个可以处理此问题的MySQL查询?

  • 如果UPDATE中存在关联,是否有单个MySQL查询可以执行item_person

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

  1. UPDATE项目set item_status = 1 where where item_person.item = item.item_id
  2. UPDATE项目set item_status = 1 where not not item_person.item = item.item_id
  3. 请注意,这两个查询都是未经测试的,因为我无法从此处访问mysql并且您没有给出fiddle。如果您需要帮助调试,请随时发表评论。