在select语句中生成rownum而不使用db特定的函数

时间:2013-05-17 08:32:18

标签: sql

我想在sql select语句中获取rownumbers但它不应该是特定于DB的查询,就像我不能使用oracle的rownum。请告诉我如何实现这一点。
我有如下表格结构pid,emplid,desc as colums和pid以及emplid组合将用作主键。因此,请在此用例中建议查询。

谢谢,
希亚姆

2 个答案:

答案 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