gpt4 book ai didi

Mysql - 通过保留以前的数据合并两个表

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

如何根据 productsUPDATEsales 更新 products 表中的 sales,其中 products. id = productsUPDATE.id 并同时保留products的先前数据编号?

这是我的两个表:

# products     # productsUPDATE
id Sales id Sales
---|-----| ---|-----|
1 | 10 | 1 | 40 |
2 | 11 | 2 | 50 |
3 | 12 | 3 | 80 |

我尝试了这个查询,但我丢失了 products 表中的销售数据:

UPDATE products 
INNER JOIN productsUPDATE ON products.id = productsUPDATE.id
SET products.sales = productsUPDATE.sales
WHERE productsUPDATE.id = products.id

查询输出:

# products     # productsUPDATE
id Sales id Sales
---|-----| ---|-----|
1 | 40 | 1 | 40 |
2 | 50 | 2 | 50 |
3 | 80 | 3 | 80 |

期望的输出:

# products      # productsUPDATE
id Sales id Sales
---|--------| ---|-----|
1 | 40,10 | 1 | 40 |
2 | 50,11 | 2 | 50 |
3 | 80,12 | 3 | 80 |

最佳答案

您可以使用以下解决方案使用 CONCAT_WS :

UPDATE products 
INNER JOIN productsUPDATE ON products.id = productsUPDATE.id
SET products.sales = CONCAT_WS(',', products.sales, productsUPDATE.sales)
WHERE productsUPDATE.id = products.id

除了将数据存储在products 表中,您还可以使用VIEW。 :

CREATE VIEW products_current AS
SELECT p.id, CONCAT_WS(',', GROUP_CONCAT(DISTINCT p.Sales), GROUP_CONCAT(pu.Sales SEPARATOR ','))
FROM products p INNER JOIN productsUPDATE pu ON p.id = pu.id GROUP BY p.id;

demo on dbfiddle.uk

关于Mysql - 通过保留以前的数据合并两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55089630/

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