【发布时间】:2021-02-06 04:35:56
【问题描述】:
我有这个查询,它在 Mysql 5.* 中没有问题,但我最近升级到 MySQL 8,现在查询抛出如下语法错误:
您的 SQL 语法有错误;查看与您的 MySQL 服务器版本相对应的手册,了解在 'row_number, @breed' 附近使用的正确语法
查询是(为简单起见删除了许多无用的细节):
SELECT `name`, `age`, breed
FROM (
SELECT
`dogs`.`name`,
`dogs`.`age`,
@row_number:=CASE WHEN @breed=breed
THEN @row_number+1
ELSE 1
END AS row_number
, @breed:=breed AS breed
FROM `dogs` /* other details with joins, subqueries and limits left out for simplicity*/;
breed 应该保持一个行数,这样我就可以获得由breed 分组的行的 n 行。也就是说,例如,如果 n=2,我的结果将是:
name | age | breed
------------------
fifi | 2 | labrador
bingo | 5 | labrador
rocket | 1 | german shepherd
sky | 1 german shepherd
我的主要问题是为什么会出现语法错误。谷歌,是我的朋友,但不是在这种情况下......我试过了。我还尝试删除“as”,在 case/when/then/end 周围添加括号,但没有任何乐趣!
【问题讨论】:
标签: mysql-8.0