今天在执行一个SQL
语句的时候,在我本地数据库一直报语法错误,仔细检查了下,发现有个别名使用了groups
,之前在博客园写过一篇关于MySQL
关键字的文章,我记得保留字里面没有这个GROUPS
啊,只有个GROUP
,难道保留字的复数也不能直接使用(需要加撇号,一般是键盘上位于数字键1
左边那个键)?然后就去MySQL
官网上看了下,还真找到了相关说明。GROUPS
是MySQL 8.0
版本新增的保留关键字。
下面是我的SQL
语句:
其中name
是非保留关键字,不需要加撇号,groups
是保留关键字,需要加撇号,否则报语法错误。
SELECT `groups`.name, COUNT(*) num_customers FROM (
SELECT SUM(a.avail_balance) cust_balance FROM account a
INNER JOIN product p ON a.product_cd = p.product_cd
WHERE p.product_type_cd = 'ACCOUNT' GROUP BY a.cust_id
) cust_rollup
INNER JOIN (
SELECT 'Small Fry' name, 0 low_limit, 4999.99 high_limit
UNION ALL
SELECT 'Average Joes' name, 5000 low_limit, 9999.99 high_limit
UNION ALL
SELECT 'Heavy Hitters' name, 10000 low_limit, 9999999.99 high_limit
) `groups` ON cust_rollup.cust_balance BETWEEN `groups`.low_limit AND `groups`.high_limit
GROUP BY `groups`.name;
这是我的数据库版本:
mysql> SELECT VERSION();
+-----------+
| VERSION() |
+-----------+
| 8.0.11 |
+-----------+
1 row in set
mysql>
明确一个概念:关键字包括非保留关键字和保留关键字。保留关键字又简称为保留字。
可以参考我翻译的官方文档:9.3 关键字和保留字