mysql问题 分页查询
伊谢尔伦
伊谢尔伦 2017-04-17 11:34:49
[MySQL讨论组]

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

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(2)
黄舟

最简单的做法:

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里折腾什么?

大家讲道理

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

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号