4

我正在使用 phpMyAdmin 编写一些我认为很简单但被证明令人头疼的 SQL 代码。我正在使用教程来帮助我。我的目标是从结果集中获取第一列和最后一列 id。当我执行此查询时,我得到 5 行,从 15 开始,一直到 11。

SELECT id
FROM boardPost
WHERE recipientId = 1
ORDER BY id DESC
LIMIT 0,5

但是,当我尝试此查询时,我收到错误 #1064:“您的 SQL 语法有错误。”

SELECT FIRST(id)
FROM boardPost
WHERE recipientId = 1
ORDER BY id DESC
LIMIT 0,5
4

5 回答 5

4

可能是这样的?

SELECT min(id), max(id)
from (
  select id
  from boardPost
  where recipientId = 1
  order by id desc
  limit 0,5
) t
于 2013-03-22T12:58:15.187 回答
2

如果你只想要id结果集的第一个和最后一个,你可以考虑这个:

SELECT MIN(id) firstId, MAX(id) lastId FROM someTable WHERE aField = 1;

请注意,它仅在您使用ORDER BY字段时才有效AUTO_INCREMENT,否则您可能会得到意想不到的结果。

它只适用于全套。如果您需要id有限的第一个和最后一个,您可能最好使用 2 个查询ASCDESCorder 和LIMIT 1

于 2013-03-22T12:52:58.223 回答
1

MySQL 不支持该FIRST()功能。您将需要使用他们在该教程中指定的解决方法(使用ORDER BYand LIMIT

于 2013-03-22T12:47:08.083 回答
1

我想这就是你想要的?

Select id from boardPost order by id asc limit 1

Select id from boardPost order by id desc limit 1
于 2013-03-22T12:50:12.320 回答
1

在某些情况下(比如我的,第一次把我带到这里),有一些很少使用的 MySQL “窗口函数”,例如FIRST_VALUELAST_VALUE它可能提供您正在寻找的功能。

(这里有更多关于Window Function Concepts and Syntax的信息,以及该术语的Wikipedia 描述。)

于 2019-10-04T18:00:51.237 回答