我有MySQL Server版本5.1.53。我在找一个小时自己回答这个问题。包括阅读文档本身,网址为http://dev.mysql.com/doc/refman/5.1/en/select.html
当前,我运行此查询。
SELECT dv2.timestamp FROM data_val AS dv2 WHERE dv2.timestamp > '2011-06-10 22:26:25' ORDER BY dv3.timestamp DESC LIMIT 1
然后,我试图ORDER BY通过确定MAX_QUERIES减1的计算来消除语法。
ORDER BY
SELECT (COUNT(*)-1) total FROM data_val AS dv2a WHERE dv2a.timestamp > '2011-06-10 22:26:13'
最终查询变为
SELECT dv2.timestamp FROM data_val AS dv2 WHERE dv2.timestamp > '2011-06-10 22:26:13' LIMIT ( SELECT (COUNT(*)-1) total FROM data_val AS dv2a WHERE dv2a.timestamp > '2011-06-10 22:26:13' ), 1
错误是:
#1064 - 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 '( SELECT (COUNT(*)-1) total FROM data_val AS dv2a ' at line 4
我还尝试将子查询放在OFFSET语法之后。但仍然错误。
OFFSET
您知道为什么我的子查询不起作用吗?
我需要 简短 , 简单 而 简洁的技术 说明。
从MySQL手册中:http : //dev.mysql.com/doc/refman/5.5/en/select.html
LIMIT子句可用于约束SELECT语句返回的行数。LIMIT接受一个或两个数字参数,这两个参数都必须 是非负整数常量 ,但以下情况除外: 在准备好的语句中,可以使用?指定LIMIT参数。占位符标记。 在存储的程序中,可以从MySQL 5.5.6开始使用整数值的例程参数或局部变量来指定LIMIT参数。
LIMIT子句可用于约束SELECT语句返回的行数。LIMIT接受一个或两个数字参数,这两个参数都必须 是非负整数常量 ,但以下情况除外:
在准备好的语句中,可以使用?指定LIMIT参数。占位符标记。
在存储的程序中,可以从MySQL 5.5.6开始使用整数值的例程参数或局部变量来指定LIMIT参数。
MySQL查询优化器需要 在 运行查询 之前 将限制参数解析为一个常数,否则它将不知道要返回多少行。