我想在sql select语句中获取rownumbers但它不应该是特定于DB的查询,就像我不能使用oracle的rownum。请告诉我如何实现这一点。
我有如下表格结构pid,emplid,desc as colums和pid以及emplid组合将用作主键。因此,请在此用例中建议查询。
谢谢,
希亚姆
答案 0 :(得分:1)
许多主要的RDBMS都支持row_number()
函数,但我不相信它在MySQL中,所以它真的取决于你想要它是多么不可知。如果你想让它真正不可知,最好将它移出数据库层。
编辑:valex计算rownum的方法可能比将其移出DB更好吗
答案 1 :(得分:0)
要做到这一点,你必须有一个独特的Id
字段 - 用于区分一行与另一行的任何东西。如果是的话:
select t1.*,
(select count(id) from t as t2 where t2.id<=t1.id) as row_number
from t as t1 order by Id
UPD:如果你有2列来下订单,那么它将如下所示:
select t1.*,
(select count(id) from t as t2 where t2.id1<=t1.id1 and t2.id2<=t1.id2)
as row_number
from t as t1 order by Id1,id2