gpt4 book ai didi

php - 用不同的值更新多个 MySQL 行

转载 作者:行者123 更新时间:2023-11-29 08:01:24 25 4
gpt4 key购买 nike

注意:我意识到下面的表格和列可能会令人困惑,因此这是我提到的两个表格的简化版本:

表“类别”包含列:id、类型

表“条目”有列:id、类别、...

我有一个名为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|,因为您的示例似乎表明现有值将以 | 开头和结尾>已经。)

<小时/>

也就是说,您可能最好使用一个数据库架构,该架构将条目到类别的映射存储在单独的多对多表中。例如:

类别:

id | type | ...
---------------
1 ...
2 ...
3 ...

条目:

id  | ...
---------
100 ...
101 ...
102 ...

entries_to_categories:

entry | category
----------------
100 1
100 2
101 3

然后,您可以根据需要使用 JOIN 检索类别集,或检查某个类别中是否有某些内容。在本例中,条目 100 属于类别 12,条目 101 属于类别 3 ,并且条目 102 不属于任何类别。

关于php - 用不同的值更新多个 MySQL 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23708362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com