我的 MySQL 服务器版本为 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 的计算来确定语法。通过这样做我可以写,
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
句法。但仍然错误。
您知道为什么我的子查询不起作用吗?
我需要技术细节short,
simple, and clean解释。
来自 MySQL 手册:http://dev.mysql.com/doc/refman/5.5/en/select.html
LIMIT 子句可用于限制 SELECT 语句返回的行数。 LIMIT 接受一个或两个数字参数,它们必须都是非负整数常量,但以下情况除外:
在准备好的语句中,可以使用 ? 指定 LIMIT 参数。占位符标记。
在存储的程序中,从 MySQL 5.5.6 开始,可以使用整数值例程参数或局部变量来指定 LIMIT 参数。
MySQL查询优化器需要将限制参数解析为常量before运行查询,否则它将不知道要返回多少行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)