2013-02-09 126 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。如果您需要幫助調試,請隨時留下評論。

相關問題