【发布时间】:2019-06-17 23:39:03
【问题描述】:
SELECT mapname,
(SELECT count(1)+1 FROM ck_bonus b WHERE a.mapname=b.mapname AND a.runtime > b.runtime AND a.zonegroup = b.zonegroup AND b.style = %i) AS rank,
(SELECT count(1) FROM ck_bonus b WHERE a.mapname = b.mapname AND a.zonegroup = b.zonegroup AND b.style = %i) as total
FROM ck_bonus a WHERE steamid = '%s' AND style = %i;
这段代码在 MySQL8 更新之前可以正常工作,但现在出现此错误
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near
'rank, (SELECT count(1) FROM ck_bonus b WHERE a.mapname = b.mapname AND a.zonegro' at line 1
我浏览了谷歌,但找不到正确的答案。 用 count() 或 count (*) 替换 count(1) 没有帮助。
这个查询对于 MySQL8 应该是什么样的?
【问题讨论】:
-
Rank 在 8.0.2 中成为保留字 尝试不同的别名,您可能需要重写此查询以利用 8 中的窗口函数
标签: mysql sql database mysql-8.0