2013-03-22 59 views
-2

我正在使用phpMyAdmin编写一些我认为很简单但很令人头疼的SQL代码。我正在使用this教程来帮助我。我的目标是从结果集中获取第一列和最后一列的ID。当我做这个查询我得到5行开始在15至11SQL First()函数

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

会然而,当我尝试此查询我得到一个错误#1064

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

如果您只想要第一个ID,为什么要抓取5行?为什么不只是取得你需要的1行? – 2013-03-22 12:46:58

+2

不要使用w3schools它充满了错误。 MySQL没有'first()'函数(反正这不是一个标准的SQL函数)。你可能想要:'min(id)' – 2013-03-22 12:48:57

+0

我试过min,但是它在整个表中给了我min。我只需要那个特定结果集的最小值 – gmustudent 2013-03-22 12:49:31

回答

1

也许这样的事情?

SELECT min(id), max(id) 
from (
    select id 
    from boardPost 
    where recipientId = 1 
    order by id desc 
    limit 0,5 
) t 
+0

宾果!谢谢! – gmustudent 2013-03-22 13:00:45

+0

@gmustudent:很高兴听到这一点。并远离w3schools(*任何*主题) – 2013-03-22 13:03:27

0

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

0

我认为这就是您想要的吗?

Select id from boardPost order by id asc limit 1 

Select id from boardPost order by id desc limit 1 
+0

这个问题是我不知道我的结果集的边界 – gmustudent 2013-03-22 12:56:51

+0

@gmustudent你不知道边界是什么意思?你想得到整个表的第一行和最后一行吗? – ITroubs 2013-03-22 12:58:43

0

如果你只是想在第一和结果集的最后id,你可以考虑一下:

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

注意,它会只有工作你确实使用ORDER BYAUTO_INCREMENT字段,否则你可能会得到意想不到的结果。

它只适用于整套。如果你需要有限的第一个和最后一个id,你可能更好地使用ASCDESC命令和LIMIT 1两个查询。

+0

我尝试了分钟,但它给了我在整个表中的分钟。我只需要那个特定结果集的最小值 – gmustudent 2013-03-22 12:53:38

+0

刚刚添加。 :) – 2013-03-22 12:55:05

+0

@gmustudent是对的。如果他必须按(例如)一个字符串排序并得到第一个结果,那么min(id)将得到最小的id,而不是第一行 – ITroubs 2013-03-22 12:55:56