在本地主机上,此查询正常运行,运行正常的 MySQL:
SELECT COUNT(*) as rows, customers. *
FROM customers
WHERE user_id = 6
AND age = 10
ORDER BY timestamp DESC LIMIT 0
Run Code Online (Sandbox Code Playgroud)
然而,在最新的 mariadb 上,它抛出了这个:
SELECT COUNT(*) as rows, customers. *
FROM customers
WHERE user_id = 6
AND age = 10
ORDER BY timestamp DESC LIMIT 0
Run Code Online (Sandbox Code Playgroud)
1064 - 你的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,了解在“行,客户”附近使用的正确语法。* FROM customer WHERE user_id = 6 AND age' 在第 1 行时间:0.011s
有谁知道为什么会这样?
rows 是 MariaDB 中的保留关键字。
https://mariadb.com/kb/en/library/reserved-words/
除非您单引号或双引号或反引号:
select id as 'rows' from tbl;
select id as "rows" from tbl;
select id as `rows` from tbl;
Run Code Online (Sandbox Code Playgroud)
db<>在这里摆弄
正如dbdemon所评论的,rows现在也是 MySQL 中的保留字,特别是从版本 8.0.2 开始。在此处查看另一个 db<>fiddle 演示。