我想在 sql select 语句中获取行号,但它不应该是特定于数据库的查询,就像我不能使用 oracle 的行号一样。请让我知道如何实现这一点。
我的表结构如下 pid,emplid,desc 作为列,pid 和 emplid 组合将用作主键。所以建议在这个用例中查询。
谢谢,
希亚姆
我想在 sql select 语句中获取行号,但它不应该是特定于数据库的查询,就像我不能使用 oracle 的行号一样。请让我知道如何实现这一点。
我的表结构如下 pid,emplid,desc 作为列,pid 和 emplid 组合将用作主键。所以建议在这个用例中查询。
谢谢,
希亚姆
许多主要的 RDBMS 都支持该row_number()
功能,但我不相信它在 MySQL 中,所以它真的取决于您希望它有多不可知。如果您希望它真正不可知,最好将其移出数据库层。
编辑:valex 计算 rownum 的方法可能比将其移出数据库更好的选择
要做到这一点,你的表必须有一个独特的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