gpt4 book ai didi

mysql - 如何在同一表中具有匹配 id 的行上将 field_name 设置为 GROUP_CONCAT?

转载 作者:行者123 更新时间:2023-11-29 21:28:18 25 4
gpt4 key购买 nike

我有一个包含两列的表格:“sale_id”和“product_name”。如果一笔销售包含多个产品,则存在重复的 'sale_id' 值。我想连接产品名称,以便对于包含多个产品的销售,产品名称包含在同一字段值中。我尝试将其设置为另一个表的 group_concat 并尝试创建一个新表,但出现错误。我尝试了以下变体:

UPDATE table1 SET `product_name` = GROUP_CONCAT(product_name SEPARATOR ', ')
FROM products_table
WHERE table1.sale_id=product.sale_id;

任何帮助将不胜感激。

最佳答案

唯一真诚的建议是更改您的表结构,使其变为 normalized 。这将通过两个步骤为您提供解决方案:

  1. 更改表结构,将销售、产品以及销售与产品之间的关系建模为 3 个表。
  2. 添加一个“ View ”,用于创建您要选择的结构。这是可选的,因为您可以让应用程序层根据需要构建此查询。以这种方式使用 View 可以像个人喜好一样简单,也可以是您组织的数据库方法的重要组成部分。

表格将如下所示:

产品

  • ID
  • 姓名
  • 等等

销售

  • ID
  • 开始数据
  • 结束数据
  • 等等

销售产品

  • sale_id
  • 产品 ID
  • 等等

我想你可以想象如何用数据填充这些。然后 View 将接受如下查询:

SELECT Sales.id, GROUP_CONCAT(Products.name) 
FROM Sales_Products
JOIN Sales ON sale_id = Sales.id
JOIN Products ON product_id = Products.id
GROUP BY Sales.id

关于mysql - 如何在同一表中具有匹配 id 的行上将 field_name 设置为 GROUP_CONCAT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35401080/

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