MySQL 动态键/对转换为单个记录集

Posted

技术标签:

【中文标题】MySQL 动态键/对转换为单个记录集【英文标题】:MySQL dynamic key/pairs converted to single record sets 【发布时间】:2013-10-17 21:37:33 【问题描述】:

我确定我的问题具有误导性,因此请允许我展示我的挑战。我有一个包含动态构建数据的表(用户设置字段名称并允许输入特定数据)

表格

键 |价值 |人


键1 |值1 |个人 键2 |值2 |个人 键3 |价值3 |个人 键1 |值1 |人B 键2 |值2 |人B 键3 |价值3 |人B

我需要将其更改为以下查询,以便过滤对这些记录的搜索:

动态创建的查询表

人 |键1 |键2 |键3


人A |值1 |值2 |价值3 人B |值1 |值2 |价值3

请向我提供一个 mysql 查询以产生以下结果。注意,密钥是由用户动态创建的,因此可以产生更多/更少。

【问题讨论】:

这称为 pivot。 MySQL 没有这种能力。只有知道所有可能的键值才能做到这一点。 为什么需要对数据进行透视以便过滤? 使用 3 个查询和几行脚本而不是单个数据库查询更容易完成。听起来像是家庭作业或类似的挑战。 好的,感谢您的 cmets。老实说,我认为这将是过滤数据的最简单方法 - 即。用户通过输入一个词并添加过滤参数(即他想将搜索词与哪个字段键进行比较)来输入搜索,并且应该返回匹配的记录。我想我会编写一个构建函数来将每一行放在一起来构建记录对象。 感谢 Pivot 术语 Barmar.. 对我来说是新手,但现在我知道了 【参考方案1】:

如上所述,我正在寻找的术语是 Pivot,MySQL 不支持它。因此,我会将单行记录提取到我的脚本中,并在将结果返回给用户之前从它们构建一个对象。似乎是最简单的方法。

【讨论】:

以上是关于MySQL 动态键/对转换为单个记录集的主要内容,如果未能解决你的问题,请参考以下文章

在 PHP 中将 PDO 记录集转换为 JSON [重复]

将 HQL 与 MySQL 一起使用,如何在 group by 之前对结果集进行排序,以便选择正确的记录?

将 DAO 记录集转换为断开连接的 ADO 记录集 dbDecimal 问题

使用 roxygen2 在单个文档对象中记录多个数据集

MySQL游标(cursor) 定义及使用

MySQL INSERT... 选择包含 4.2 亿条记录的大型数据集