首页 > mysql问题 分页查询

mysql问题 分页查询

从两个表聚合查询,因为要在页面使用top分页,所以要给新查出的数据添加一列新顺序编号。如:1.2.3.4.......


完全可以采用其他方案代替,例如:
1、sql查出数据,
2、在对数据进行处理,

没有必要非得在sql层就拼出一个你直接可用的数据。


最简单的做法:

SELECT (@row:=@row+1) AS ROW, Field1, Field2
FROM SomeTable ,(SELECT @row := 0) r   
ORDER BY SomeField

不过这样有个问题,如果你的数据是从多张表里Join出来的,比如:

SELECT (@row:=@row+1) AS ROW, Field1, Field2
FROM Table1
JOIN Table2 on Table2.ID = Table1.ID
JOIN Table3 on Table3.ID = Table1.ID 
WHERE SomeFilter
,(SELECT @row := 0) r   
ORDER BY SomeField DESC

你会发现ROW的顺序会跟着排序的顺序走,也就是说如果你用ORDER BY SomeField DESC,ROW的顺序就反了。
如果你不在乎页内的顺序,你可以:

select *
from 
(
    SELECT (@row:=@row+1) AS ROW, Field1, Field2
    FROM Table1
    JOIN Table2 on Table2.ID = Table1.ID
    JOIN Table3 on Table3.ID = Table1.ID 
    WHERE SomeFilter
    ,(SELECT @row := 0) r   
    ORDER BY SomeField DESC
)
ORDER BY ROW

PS. 话说那么多办法直接在前端加序列号你非要在SQL里折腾什么?

【热门文章】
【热门文章】