2013-04-25 91 views
0

我有1个包含8000条记录的MYSQL表。我想通过全名的第一个字符来查询名字,中间名和姓氏。例如,我有40行记录(名字,中间名和姓氏),他们的名字的第一个字符是SSS。我的问题是,如何查询“SSS”只返回6个结果,当我再次查询“SSS”时,我需要另外6个结果等等,直到所有40个记录查询结束。我需要根据值的第一个字符查询MYSQL记录

我用下面的查询,但只返回前6个结果,当我下次查询“SSS”时,它会一遍又一遍地返回相同的结果。拜托我需要你的帮忙。

SELECT * 
FROM Table 
WHERE (UPPER(FName) LIKE UPPER('S%') 
     AND UPPER(MName) LIKE UPPER('S%') 
     AND UPPER(LName) LIKE UPPER('S%') 
ORDER BY ID 
LIMIT 6 OFFSET 0 

在此先感谢。

+4

你需要增加偏移才能得到不同的结果 – Sharlike 2013-04-25 15:24:11

回答

0

您按ID排序 - 很好。还记得去年的最大ID返回的数据集,当你查询下一次加条件ID> your_last_max_id

+0

这是一般的sql答案...在你的mysql情况下,你可以简单地增加偏移! – Ivan 2013-04-25 15:38:09

+0

Ivan,你可以发表一个如何使用MAX ID来完成这个任务的例子吗?使用1个查询可以解决我遇到的问题吗? – user2320369 2013-04-25 17:06:53

+0

1个查询 - no。你必须在某个地方存储状态(最后偏移或最大ID)。我不知道你的整体问题是什么,但是例如你可以将max id存储在一个表中。假设它是表table1中的last_max_id,并且您使用0初始化它,则需要2个查询来完成此操作: – Ivan 2013-04-26 08:31:22

0

第二次变化偏移:

LIMIT 6 OFFSET 6 

然后

LIMIT 6 OFFSET 12