我有以下查询让我非常需要:
SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'MAX(IF(Date = ''',
Date,
''', Description, NULL)) AS ',
CONCAT("'",Date,"'")
)
) INTO @sql
FROM updates;
SET @sql = CONCAT('SELECT Action, ', @sql, ' FROM updates GROUP BY Action');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
并提供以下输出:
我希望Column标题包含以下格式示例:
日/月/年
2016年4月10日
%d /%米/&安培; Y
我已经对我的代码尝试了许多不同的更改(这里列出了太多的小改动),但每次我似乎都会收到错误,我猜的是关于查询的格式/语法。
下面是一个例子,我试图展示我的想法:
SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'MAX(IF(Date = ''',
Date,
''', Description, NULL)) AS ',
CONCAT("'",Date_Format(Date, "'"%d/%m/%Y"'"),"'")
)
) INTO @sql
FROM updates;
SET @sql = CONCAT('SELECT Action, ', @sql, ' FROM updates GROUP BY Action');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
正如你所看到的,我试图设置" AS"值(列名)使用DATE_FORMAT代码片段。但是,当我运行它时,在" FROM更新后出现以下错误;"在" INTO @ sql":
之前错误1064(42000):您的SQL语法有错误;检查 手册,对应右边的MySQL服务器版本 语法使用在'%m /%Y"'"),"'")
这反过来在PREPARE stmt FROM @sql:
之后给出了以下错误消息错误1064(42000):您的SQL语法有错误;检查 手册,对应右边的MySQL服务器版本 语法在' NULL附近使用'在第1行
如果有人知道如何帮助我或指出我正确的方向,我将非常感激!
答案 0 :(得分:1)
这select concat(date_format(now(), '%d/%m/%Y'))
给了我11/10/2016
。
这工作得非常好。我想你应该考虑删除双引号。这应该可以解决问题。