我知道有类似的问题,但似乎没有适用于我想做的事情。
给出以下返回的查询,即85结果。
SELECT * FROM tbl_name WHERE person = 'Tom';
我有另一个类似的查询,但返回168个结果。
SELECT * FROM tbl_name WHERE person = 'Bob';
我试图以50的有效倍数获得结果。
只需更改person
子句中的WHERE
值,我希望获得Tom的第1,第50个结果的预期输出。这意味着总共有2行结果。
同样Bob
将返回第1,第50,第100,第150个结果。总共有4行结果。
是否可以只用MySQL做到这一点?
答案 0 :(得分:7)
钉了它。将50更改为不同的增量。这假设你意味着你想要1个,51个,101个(每50个)。
SELECT
returnTable.*
FROM (
SELECT
@rownum:=@rownum+1 AS rowNumber,
tbl_name.*
FROM forum_posts, (SELECT @rownum:=0) variableInit
WHERE tbl_name.person = 'Tom'
) AS returnTable
WHERE returnTable.rowNumber = 1
OR (returnTable.rowNumber - 1) MOD 50 = 0;
如果你真的想要1个,50个,100个,150个,那么下面那个(从WHERE中删除-1)
SELECT
returnTable.*
FROM (
SELECT
@rownum:=@rownum+1 AS rowNumber,
tbl_name.*
FROM forum_posts, (SELECT @rownum:=0) variableInit
WHERE tbl_name.person = 'Tom'
) AS returnTable
WHERE returnTable.rowNumber = 1
OR returnTable.rowNumber MOD 50 = 0;