gpt4 book ai didi

php - 如何合并到数据库

转载 作者:行者123 更新时间:2023-11-30 21:24:00 26 4
gpt4 key购买 nike

我找不到解决这个问题的最佳方法,

I have two different list of items, one in the DB, one not. Both list have item ids and quantity, I need to merge the two list into the DB.

我的第一个倾向是将所有项目从数据库中提取出来,然后在应用程序逻辑中合并这两个列表。然后我将从数据库中删除旧列表并插入新的合并列表。

我想我也可以更新/插入我想合并到数据库中的每个项目,但这将意味着很多查询(也许有一个我可以写的存储过程,但我对存储过程不是那么热).

我想知道在这种情况下 SQL 或应用程序逻辑是否会执行得更好?

我也想听听其他人如何解决这个问题。

谢谢。

更新:

这里有更多的细节,

这不是一次合并,它会发生多次。基本上我的应用程序中有一个对象包含项目列表,最终这些项目需要放入数据库中。数据库中已经有项目,所以我不能只插入项目,如果两个项目具有相同的 ID 并插入具有唯一 ID 的项目,我必须增加数据库中项目的数量。

还有一个更新:

使用 MySQL 和 PHP

最佳答案

创建两个临时表,一个是旧数据库数据的副本,另一个包含当前不在数据库中的内容。然后对两张表的bag union进行分组查询。

例如,给定以下初始化点,并假设 MySQL 语法:

create temporary table a (name varchar(255), quantity int);
create temporary table b (name varchar(255), quantity int);
insert into a values ('fork', 1), ('spoon', 2);
insert into b values ('fork', 2), ('knife', 1);

然后您只需运行以下查询即可获得所需的结果。

select name, sum(quantity) AS quantity 
from ((select * from a) union all (select * from b)) c
group by c.name;

这会给你结果:

 +-------+----------+
| name | quantity |
+-------+----------+
| fork | 3 |
| knife | 1 |
| spoon | 2 |
+-------+----------+

如果要将结果存储回原始数据表,只需在创建两个临时表后从原始表中删除,然后在整个 SELECT 语句前加上 INSERT INTO original_table SELECT ...

关于php - 如何合并到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1195855/

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