我有一张表,其中包含3个字段:
每当我得到结果时,它应该给我5个名字,其状态= 1。 假设db包含以下内容:
id name status
1 A 1
2 B 1
3 C 0
4 D 1
5 E 0
6 F 0
7 H 1
8 I 1
9 J 1
10 K 1
11 L 1
12 M 0
第一次,取回应该返回:A,B,D,H,I(5条记录)
第二次,fetch应返回:J,K,L,A,B(5条记录)
更新:我不想要典型的分页。考虑我有从A1到A12的12个可用名称。第一次获取应该返回A1-A5,第二次获取A6-A10和第三次获取A11,A12,A1,A2,A3。因此,当我到达终点时,我需要从第一个开始获取记录以填充5个插槽。
我在php中使用mysql
答案 0 :(得分:1)
这看起来像某种作业分配脚本?
你需要两件事:
然后您可以将查询编写为
SELECT
id, name
FROM
table
WHERE
status=1
ORDER BY
(bignum + id) MOD (bigNum + lastID + 1)
LIMIT 5
Shazaam!
答案 1 :(得分:0)
跟踪返回记录的ID,并执行以下查询:
select top 5 *
from (
select top 5 *
from MyTable
where status = 1
and id not in (1,2,4,7,8)
order by name
union
select top 5 *
from MyTable
where status = 1
order by name
) a
答案 2 :(得分:0)
$q = mysql_query("SELECT name FROM table WHERE status = 1 LIMIT 5);
while ($row = mysql_fetch_row($q))
{
.... //first 5
}
$q = mysql_query("SELECT name FROM table WHERE status = 1 LIMIT 5,5);
while ($row = mysql_fetch_row($q))
{
.... //second 5
}
这使用mysql的偏移功能 - 将其视为结果的分页。