gpt4 book ai didi

MySQL 表枢轴 - 动态

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

苏...

目前正在 Wordpress 中重新创建自定义构建网站,我需要传输内容。

我创建了一个临时表,其中包含我需要的数据,其结构如下naam_theater (varchar) 这是 idnaam (varchar) 这是关键waarde (varchar) 这是值

我需要在 csv 中获取这些内容,每个 naam_theater 具有一行,每个 naam 具有显示 waarde 的列。

所以我想出了这个查询:

SET @@group_concat_max_len = 320000;
SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'IF(waarde = ''',
naam,
''', waarde, NULL) AS ',
naam
)
) INTO @sql
FROM
temp_theaters;
SET @sql = CONCAT('SELECT naam_theater, ', @sql, '
FROM temp_theaters
GROUP BY naam_theater');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

当我运行这个程序时,我收到错误#1064,说我的 SQL 语法在 'plaats, IF(waarde = 'Postadres postcode', waarde, NULL) AS Postadres postcode, IF('

所以我猜问题是由我的字段中的间距引起的(现在成为一列)。但我似乎无法找到解决方案。

有什么建议吗?

更新

当前使用此查询,0 行结果是由于 phpmyadmin 中的问题造成的:

SET @@group_concat_max_len = 32000000;
SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'MAX(IF(waarde = ''',
naam,
''', waarde, NULL)) AS `',
naam,
'`'
)
) INTO @sql
FROM
temp_theaters;
SET @sql = CONCAT('SELECT naam_theater, ', @sql, '
FROM temp_theaters
GROUP BY naam_theater');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

我现在得到的结果已经越来越接近了。只是,我的字段(naam_theater 除外)现在为空。虽然他们的表中确实有内容。

我不确定如何最好地包含表格数据,所以我只是插入它的屏幕截图。 I'm not sure on how I could best include table data so I'm just insterting this screenshot of it.

最佳答案

问题是您的名称中包含空格,因此当您将它们用作列别名时,需要将它们放在反引号中。

您还缺少对 SUM()MAX() 等分组函数的调用,以将一组的所有行放入同一行中结果。

SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'MAX(IF(naam = ''',
naam,
''', waarde, NULL)) AS `',
naam,
'`'
)
) INTO @sql
FROM
temp_theaters;

关于MySQL 表枢轴 - 动态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40773711/

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