我的 MySQL 数据库中有两个表,它们是:
我想要一些记录的字段在建表阶段没有预定义,这样我就可以使用这对表来存储设置了不同字段的记录。
我用以下记录填充这些表:
我想编写将返回以下结果的选择查询:
有没有办法在 MySQL 中做到这一点,或者我应该选择两个表并在 PHP 中处理它们以获得我需要的结果?
UPD:请注意,我事先不知道字段的名称是什么,因此我无法将字段的“名称”硬编码到选择查询中。
最佳答案
您可以通过检索列名并生成查询来使用动态 SQL 来完成此操作(例如: How To have Dynamic SQL in MySQL Stored Procedure )
但是我肯定会为此选择 PHP 路线。它需要大量的字符串操作,而这并不是 SQL 的设计目的。
最终查询将类似于(伪代码):
SELECT
ID
,Time
,Source
,SUM(CASE WHEN field_name = 'Length' THEN field_value END) AS [Length]
,etc
FROM records
INNER JOIN fields
GROUP BY
ID
对于找到的每个不同的字段名称使用不同的 CASE 语句。
关于mysql - 如何从专用 'fields' 表中选择值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26301630/