[英]Update multiple rows from one table to another
我正在嘗試將多行從一個表更新到另一表。
我有這個工作,但我需要在一個查詢而不是8個單獨的查詢中更新8個值。
我需要這個
slot_id | spell_id
--------------------
0 | 1518
1 | 1519
2 | 1522
3 | 3476
4 | 4881
6 | 3475
7 | 4880
對此
spell1 | spell2 | spell3 | spell4 | spell5 | spell6 | spell7 | spell8
---------------------------------------------------------------------
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0
我所完成的是一次1。
UPDATE instance_saved_info
INNER JOIN character_memmed_spells ON instance_saved_info.id = character_memmed_spells.id
SET instance_saved_info.Spell1 = character_memmed_spells.spell_id
WHERE character_memmed_spells.slot_id = 0
我需要添加使其生效。
SET instance_saved_info.Spell2 = character_memmed_spells.spell_id
WHERE character_memmed_spells.slot_id = 1
SET instance_saved_info.Spell3 = character_memmed_spells.spell_id
WHERE character_memmed_spells.slot_id = 2
SET instance_saved_info.Spell4 = character_memmed_spells.spell_id
WHERE character_memmed_spells.slot_id = 3
SET instance_saved_info.Spell5 = character_memmed_spells.spell_id
WHERE character_memmed_spells.slot_id = 4
SET instance_saved_info.Spell6 = character_memmed_spells.spell_id
WHERE character_memmed_spells.slot_id = 5
SET instance_saved_info.Spell7 = character_memmed_spells.spell_id
WHERE character_memmed_spells.slot_id = 6
SET instance_saved_info.Spell8 = character_memmed_spells.spell_id
WHERE character_memmed_spells.slot_id = 7
謝謝
那么您可以聲明多個SET
運算符,例如
UPDATE instance_saved_info
INNER JOIN character_memmed_spells
ON instance_saved_info.id = character_memmed_spells.id
SET instance_saved_info.Spell1 = character_memmed_spells.spell_id,
instance_saved_info.Spell2 = character_memmed_spells.spell_id2,
.....
WHERE character_memmed_spells.slot_id = 0
假設我正確理解了您的問題,則可以使用帶有conditional aggregation
的子查詢來pivot
需要update
的8個字段:
UPDATE instance_saved_info i
INNER JOIN (
SELECT id,
max(case when slot_id = 0 then spell_id end) slot0,
max(case when slot_id = 1 then spell_id end) slot1,
....
max(case when slot_id = 7 then spell_id end) slot7
FROM character_memmed_spells
GROUP BY id) c ON i.id = c.id
SET i.Spell1 = c.slot0, i.Spell2 = c.slot1, ..., i.Spell8 = c.slot7
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.