...的sooo
目前在Wordpress中重新创建自定义构建网站,我需要传输内容。
我创建了一个临时表,其中包含我需要的数据以及以下结构 naam_theater(varchar)是id naam(varchar)这是关键 waarde(varchar)是值
我需要在每个naam_theater的行中使用csv获取这些内容,每个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邮政编码,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除外)现在为空。虽然他们的确有内容。
答案 0 :(得分:1)
问题在于你的名字中有空格,因此当你将它们用作列别名时,你需要将它们放在反引号中。
您还缺少对SUM()
或MAX()
等分组功能的调用,以便将组中的所有行都放入结果中的同一行。
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'MAX(IF(naam = ''',
naam,
''', waarde, NULL)) AS `',
naam,
'`'
)
) INTO @sql
FROM
temp_theaters;