从两个表聚合查询,因为要在页面使用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里折腾什么?