簡體   English   中英

使用不同的值更新多個MySQL行

[英]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在類別12 ,條目101在類別3 ,條目102不在類別中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM