gpt4 book ai didi

mysql - 将未知数量的数据显示为列名

转载 作者:行者123 更新时间:2023-11-30 22:01:58 24 4
gpt4 key购买 nike

在 hql(或 mysql)中,我想创建带来所需 View 的 hql(或 mysql)查询。我有三张 table 。我称它们为表 A、表 B、表 C。我有想要的 View 。

Table A
Aid RegNum BID Value
2CE7D0A7 2000000 D5981DFC 1
9D3C13AA 2000000 C58566C5 32
9DDB90C4 2000000 812E9E75 5343

B表通过A表中B表的外键连接到A表

Table B

BID ColumnName Index
D5981DFC Question1 0
C58566C5 Question2 1
812E9E75 Question3 2

表 C 在表 A 中也有外键。注册号Reg num是表C中的主键

Table C 

Name Surname RegNum
Etibar Hasanov 2000000

如您所见,表 B 中的列名是数据

DesiredView
Name Surname RegNum Question1 Question2 Question3
Etibar Hasanov 2000000 1 32 5343

在示例中,表 A 和表 B 中有 3 行,它不是静态的,我知道如果它是静态的我可以使用 case。但是,我正在寻找列数取决于表 B 中的问题数的查询,它有 3 个问题,那么在 desiredView 中总共有 6 列,如果有 4 列,则有 7 列,依此类推。

最佳答案

如果您在 MySQL 中创建一个过程,那么您可以实现您想要的动态行为。

请创建一个过程并在过程中添加以下代码,它将提供动态输出。

SELECT GROUP_CONCAT('SUM(IF(B.ColumnName = ''', ColumnName, ''', A.Value, 0)) AS ', ColumnName) INTO @str 
FROM TableB;

SET @s = CONCAT('select C.Name, C.Surname, C.RegNum, ', @str, 'from TableC C inner join TableA A on C.RegNum = A.RegNum inner join TableB B on A.BID = B.BID group by C.RegNum');
PREPARE stmt FROM @s;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

关于mysql - 将未知数量的数据显示为列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43092319/

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