MySQL 是否可以在 LIMIT 语法之后进行子查询?如果不是,为什么?
本教程将介绍MySQL 是否可以在 LIMIT 语法之后进行子查询?如果不是,为什么?的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。
问题描述
我有 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
然后我试图通过确定 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 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 4 行的 '( SELECT (COUNT(*)-1) total FROM data_val AS dv2a ' 附近使用正确的语法
我还尝试将子查询放在 OFFSET
语法之后.但仍然错误.
您知道为什么我的子查询不起作用吗?
我需要 short 的技术细节,简单,以及干净的解释.
推荐答案
来自 MySQL 手册:http://dev.mysql.com/doc/refman/5.5/en/select.html
LIMIT 子句可用于限制 SELECT 语句返回的行数.LIMIT 接受一个或两个数字参数,它们都必须是非负整数常量,但以下情况除外:
在准备好的语句中,LIMIT 参数可以使用?占位符标记.
在存储程序中,LIMIT 参数可以使用整数值的例程参数或 MySQL 5.5.6 起的局部变量来指定.
MySQL 查询优化器需要在运行查询之前将限制参数解析为常量,否则它将不知道要返回多少行.
好了关于MySQL 是否可以在 LIMIT 语法之后进行子查询?如果不是,为什么?的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。