gpt4 book ai didi

MySQL 是否可以在 LIMIT 语法之后进行子查询?如果不是,为什么?

转载 作者:行者123 更新时间:2023-11-29 07:07:45 24 4
gpt4 key购买 nike

我有 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 语法之后。但仍然出错。

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

I need technical details with short, simple, and clean explanation.

最佳答案

来自 MySQL 手册:http://dev.mysql.com/doc/refman/5.5/en/select.html

The LIMIT clause can be used to constrain the number of rows returned by the SELECT statement. LIMIT takes one or two numeric arguments, which must both be nonnegative integer constants, with these exceptions:

Within prepared statements, LIMIT parameters can be specified using ? placeholder markers.

Within stored programs, LIMIT parameters can be specified using integer-valued routine parameters or local variables as of MySQL 5.5.6.

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

关于MySQL 是否可以在 LIMIT 语法之后进行子查询?如果不是,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6312638/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com