动态数据透视表数据| mySQL
基本上,我的数据库中有一个名为动态数据透视表数据| mySQL,mysql,sql,pivot-table,Mysql,Sql,Pivot Table,基本上,我的数据库中有一个名为Table1的表,其中包含以下数据: 由于assignedcolor、colorfinding和colorpower的值不同,该表的ProductID会重复 我想在一行中显示所有ProductID数据,这意味着如果有多个assignedcolor、colorfinding和colorpower列出,那么它将在末尾包含一个数字 SELECT查询的最终结果I应如下所示: 水平显示的列数基于每个产品ID的分配颜色的数量 在mySQL SELECT查询中可以实现类似的功
Table1
的表,其中包含以下数据:
由于assignedcolor
、colorfinding
和colorpower
的值不同,该表的ProductID会重复
我想在一行中显示所有ProductID
数据,这意味着如果有多个assignedcolor
、colorfinding
和colorpower
列出,那么它将在末尾包含一个数字
SELECT查询的最终结果I应如下所示:
水平显示的列数基于每个产品ID的分配颜色的数量
在mySQL SELECT查询中可以实现类似的功能吗?SQL查询无法根据查询执行期间发现的数据值扩展结果集的列数。在查询读取任何数据之前,必须在准备查询时固定选择列表中的列 在查询执行期间,列名也不能更改。必须在准备查询时设置它们 无法在单个SQL查询中实现所描述的内容。你的选择是:
- 执行两个查询:一个用于枚举每个产品的颜色,然后使用第一个查询的结果格式化第二个查询,其中包含所需的列
- 执行一次查询以获取表中存在的数据,然后在应用程序中编写代码以按行显示数据,以您认为最好的方式显示
无论哪种方式,您都必须在客户机中至少编写一点代码。这不能在一个查询中完成。这就是所谓的“数据透视”。在MySQL 8.x中很容易做到。您使用的是MySQL 5.x还是8.x?查询返回预定义的列。如果在编写查询时知道最大颜色数,则可以返回尽可能多的列。如果您不知道,则无法编写查询。一般来说,这在SQL中通常是没有的,但是在你的应用程序或网站中。认真考虑应用程序代码中数据显示的问题。这个问题的解决方案不是SQL相关的。这应该在应用程序端实现。您应该删除SQL和MySQL标记,并添加您正在使用的编程语言。你介意给我举一个例子,说明如何使用2查询方法来实现这一点吗?我将不胜感激