【发布时间】:2021-11-20 18:14:49
【问题描述】:
我从 Internet 上的某个地方获得了这个 MySQL 数据透视表查询。我不记得网址了。
SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'max(CASE WHEN ca.date = ''',
date_format(date, '%Y-%m-%d'),
''' THEN coalesce(p.status, ''P'') END) AS `',
date_format(date, '%Y-%m-%d'), '`'
)
) INTO @sql
FROM calendar
where date>='2013-06-01'
and date <= '2013-06-05';
SET @sql
= CONCAT('SELECT ca.studentname,
ca.rollno,
ca.class, ', @sql, '
from
(
select c.date, a.studentname, a.rollno, a.class
from calendar c
cross join tbl_admission a
) ca
left join tbl_absentees p
on ca.rollno = p.rollno
and ca.date = p.date
where ca.date>=''2013-06-01''
and ca.date <= ''2013-06-05''
group by ca.studentname, ca.rollno, ca.class
order by ca.rollno');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
当我运行这个查询时,它会显示一些语法错误。 语法错误接近
'SELECT GROUP_CONCAT'
我已经尝试添加该行但仍然没有成功
SET SESSION group_concat_max_len = 1000000;
请帮我找出我的 sql 查询中的语法错误。
【问题讨论】:
-
您是如何执行此操作的?这个例子有 6 条 SQL 语句,但是大多数查询接口不允许多查询。您需要在单独的查询请求中运行每个语句(但在同一个数据库连接上)。
-
感谢比尔的回复。在 Codeigniter 中使用它之前,我试图检查 PHP myadmin 中的查询,它向我显示语法错误。您可以尝试任何在线 MYSQL 语法检查器。
-
您使用的是哪个 phpMyAdmin 版本?我使用的是最新的 (5.1.0),并且在您的查询中没有看到任何语法错误或警告。这似乎是最近在 SQL 解析功能中得到改进的东西。
-
感谢伊萨克的回复。我想你可能是对的。我的 phpMyAdmin 版本是 4.9.2。让我更新我的软件并检查一下。
-
Issac 当我访问wampserver.com/en 下载最新版本的 WAMPserver 时,它说最新版本的 phpmyadmin 是 4.9.2。您从哪里获得最新版本(5.1.0)?
标签: mysql phpmyadmin pivot-table