如何根据sales
的{{1}}(其中products
= sales
)中的productsUPDATE
更新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 |
答案 0 :(得分:0)
您可以使用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;
答案 1 :(得分:0)
似乎要用逗号分隔值
UPDATE products
INNER JOIN productsUPDATE ON products.id = productsUPDATE.id
SET products.sales = concat(products.sales,',',sproductsUPDATE.sales )
但是您应该避免使用逗号分隔的值,而应该看一下标准化..