gpt4 book ai didi

MySql 合并来自同一个表的记录

转载 作者:行者123 更新时间:2023-11-29 06:32:06 29 4
gpt4 key购买 nike

我正在尝试执行 SQL 命令来更新行,并将行与匹配的数据组合起来。

作为我正在尝试的示例,我有一个如下所示的表格。我想将所有包含 userEmail = user@user.com 的记录更新为 admin@example.com。如果我尝试进行简单更新,则会遇到重复的 key 错误。

我可以通过添加某种计数器作为代理键来解决这个问题,但如果可能的话,我宁愿避免该选项。

另外,如果可能的话,作为次要功能,我想合并记录的数量。

我可以使用什么样的操作来实现此目的?

Original table
___________________________________________________________________________
userEmail |productId |usItemId |quantity|timestamp |
----------------------|------------|---------|--------|-------------------|
admin@example.com |111111111111|222222222| 77|2019-04-07 02:19:41|<--
admin@example.com |xxxxxxxxxxxx|xxxxxxxxx| 1|2019-04-07 02:19:41|
admin@example.com |xxxxxxxxxxxx|xxxxxxxxx| 1|2019-04-07 02:19:41|
user@user.com |111111111111|222222222| 22|2019-04-07 02:19:41|<--
user@user.com |xxxxxxxxxxxx|xxxxxxxxx| 1|2019-04-06 05:34:58|
user@user.com |xxxxxxxxxxxx|xxxxxxxxx| 1|2019-04-06 05:35:30|



Updated table
___________________________________________________________________________
userEmail |productId |usItemId |quantity|timestamp |
----------------------|------------|---------|--------|-------------------|
admin@example.com |111111111111|222222222| 99|2019-04-07 02:19:41|<--
admin@example.com |xxxxxxxxxxxx|xxxxxxxxx| 1|2019-04-07 02:19:41|
admin@example.com |xxxxxxxxxxxx|xxxxxxxxx| 1|2019-04-07 02:19:41|
admin@example.com |xxxxxxxxxxxx|xxxxxxxxx| 1|2019-04-06 05:34:58|
admin@example.com |xxxxxxxxxxxx|xxxxxxxxx| 1|2019-04-06 05:35:30|

最佳答案

我建议采取两个步骤:

insert into original (userEmail, productId, usItemId, quantity, timestamp)
select 'admin@example.com', productId, usItemId, quantity, timestamp
from original o
where o.userEmail = 'user@user.com'
on duplicate key update quantity = values(quantity) + quantity;

delete from original
where o.userEmail = 'user@user.com';

关于MySql 合并来自同一个表的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55681799/

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