MySQL是否在限制语法后进行子查询?若否,原因为何?

MySQL是否在限制语法后进行子查询?若否,原因为何?,mysql,sql,syntax,subquery,limit,Mysql,Sql,Syntax,Subquery,Limit,我有MySQL服务器版本5.1.53。我花了一个小时自己回答这个问题。包括在以下位置阅读文档本身: 目前,我运行这个查询 SELECT dv2.timestamp FROM data_val AS dv2 WHERE dv2.timestamp > '2011-06-10 22:26:25' ORDER BY dv3.timestamp DESC LIMIT 1 然后,我试图通过确定MAX_查询的计算值减去1来消除语法顺序。这样我就可以写作了 SELECT (COUNT(*)-1)

我有MySQL服务器版本5.1.53。我花了一个小时自己回答这个问题。包括在以下位置阅读文档本身:

目前,我运行这个查询

SELECT dv2.timestamp 
FROM data_val AS dv2
WHERE dv2.timestamp > '2011-06-10 22:26:25' ORDER BY dv3.timestamp DESC 
LIMIT 1
然后,我试图通过确定MAX_查询的计算值减去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-您的SQL语法有错误;查看与MySQL服务器版本相对应的手册,以了解第4行“SELECT COUNT*-1 total FROM data_val AS dv2a”附近使用的正确语法

我还尝试将子查询置于偏移量语法之后。但仍然存在错误

你知道为什么我的子查询不起作用吗

我需要简短的技术细节, 简单明了的解释


您不能嵌入MySQL手册中限制参数的查询结果:

LIMIT子句可用于约束SELECT语句返回的行数。LIMIT接受一个或两个数值参数,这两个参数都必须是非负整数常量,但以下情况除外:

在准备好的语句中,可以使用?占位符标记

从MySQL 5.5.6开始,在存储程序中,可以使用整数值例程参数或局部变量指定限制参数


MySQL查询优化器需要在运行查询之前将限制参数解析为常量,否则它将不知道返回多少行。

为什么?我需要技术细节。简而言之,MySQL不会先执行我的子查询?@exodream,确切地说,它会拒绝这样做。因为这就是它的编程方式。