[英]UPDATE multiple MySQL rows with different values
注意 :我意識到這可能會使下面的表和列感到困惑,所以這里是我提到的兩個表的簡化版本:
表“categories”包含列 :id,type
表“條目”包含列 :id,categories,...
我有一個名為entries的MySQL表,其中一列名為categories,是一串管道分隔的索引。 例如,“| 1 | 2 | 3 |” 可能是一個可能的值和“| 1 | 3 | 4 |” 可能是另一個。 數字代表表類別的索引。
我正在編寫一個管理腳本,允許將新行插入到類別表中,並且在執行此操作時,表格的相應行應該更新類別列。 例如,如果類別表的新插入行具有索引5,則“5 |” 應該連接到條目表的每個適當的列類別。
我意識到在添加新類別時我可以在每個適當的條目行使用UPDATE,但我想知道是否有更好的方法來解決這個問題。 如果不清楚我知道這是一個選項,但想知道這是否可以成為一個語句(偽代碼):
foreach ($entriesToUpdate as $currEntry)
"UPDATE entires SET categories='".$currValue."|".$newIndex."' WHERE id=".$currId;
這可以通過基於表達式的更新來完成:
UPDATE entries SET categories=CONCAT(categories, "5|") WHERE id IN (1,2,3,4,...)
( 5|
而不是示例中的5|
,因為您的示例似乎表明現有值將以|
s開頭和結尾。)
也就是說,使用數據庫模式可能會更好,該數據庫模式在單獨的多對多表中存儲條目到類別的映射。 例如:
類別:
id | type | ...
---------------
1 ...
2 ...
3 ...
項:
id | ...
---------
100 ...
101 ...
102 ...
entries_to_categories:
entry | category
----------------
100 1
100 2
101 3
然后,您可以根據需要使用JOINs
來檢索類別集,或檢查某個類別中是否存在某些內容。 在這種情況下,條目100
在類別1
和2
,條目101
在類別3
,條目102
不在類別中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.