C#怎么获取数据库当前数据所在的行号

gezhu1212 2021-05-12 03:27:05
如何获取当前数据库的数据的行号,不是行数
...全文
1304 点赞 收藏 22
写回复
22 条回复
shijies 05月17日
c# DataTable select 过滤返回新DataTable DataRow[] dr = dt.Select(“col='XXXX'”);//条件:就是字段名='某某' /// 执行DataTable中的查询返回新的DataTable /// </summary> /// <param name="dt">源数据DataTable</param> /// <param name="condition">查询条件</param> /// <returns></returns> private DataTable GetNewDataTable(DataTable dt, string condition,string sortstr) { DataTable newdt = new DataTable(); newdt = dt.Clone(); DataRow[] dr = dt.Select(condition,sortstr); for (int i = 0; i < dr.Length; i++) { newdt.ImportRow((DataRow)dr[i]); } return newdt;//返回的查询结果 }
回复 点赞
个人理解就是个主键,不管是行号,id,都可以是一个理解
回复 点赞
wanghui0380 05月17日
请先说明排序规则,你要编号。编号当然是要排序的,这里讨论在多都没意义。因为你没给排序规则,按啥排序啊,入库的自然顺序?某个列顺序??
回复 点赞
xiaoxiangqing 05月17日
除非数据库里加一列
回复 点赞
gudamzero 05月17日
--PARTITION by和ROW_NUMBER() over的用法
create table #score
(
name varchar(20),
subject varchar(20),
score int
)
--2.插入测试数据
insert into #score(name,subject,score) values('张三','语文',98)
insert into #score(name,subject,score) values('张三','数学',80)
insert into #score(name,subject,score) values('张三','英语',90)
insert into #score(name,subject,score) values('李四','语文',88)
insert into #score(name,subject,score) values('李四','数学',86)
insert into #score(name,subject,score) values('李四','英语',88)
insert into #score(name,subject,score) values('李明','语文',60)
insert into #score(name,subject,score) values('李明','数学',86)
insert into #score(name,subject,score) values('李明','英语',88)
insert into #score(name,subject,score) values('林风','语文',74)
insert into #score(name,subject,score) values('林风','数学',99)
insert into #score(name,subject,score) values('林风','英语',59)
insert into #score(name,subject,score) values('严明','英语',96)

--这条语句可以根据学科分组,根据分数进行排列,最后ROW_NUMBER() over会为每个分组进行排名编号,可以看到排名那里123..名
select *,ROW_NUMBER() over( partition by subject order by score )排名
from #score
回复 点赞
大山楂 05月16日
你可以建一个行号的列
回复 点赞
shijies 05月15日
就是当前游标所指向的行
回复 点赞
yangniao 05月15日
9楼的方法最好
回复 点赞
闪耀星星 05月15日
ROW_NUMBER() OVER(ORDER BY getdate()) as '行号'
回复 点赞
AlphaGroup 05月14日
行号主要是用来做分页的。删除还是要用自建的primarykey。这是两回事。排名涉及rank函数和分区等函数,具体参见sql server手册。
回复 点赞
Bridge_go 05月14日
with temp as
  (select ROW_NUMBER() over(order by id) as [RowNum],* from [Table])
  select [RowNum] from temp where [ID] = 10
回复 点赞
morliz子轩 05月13日
这是个什么问题。建表结构,有个id 自增字段,就解决的事。 为什么要这么做。 如果是自定义查询体,在select 后面,第一个字段加这个就可以了:

select row_number() over(order by getdate()) as Id, 

就是行索引了。
回复 点赞
YBcsdn1996 05月12日
引用 3 楼 gezhu1212 的回复:
[quote=引用 2 楼 YBcsdn1996的回复:] 希望rownumber 能帮到你

Rownumber怎么用?能给段代码吗?[/quote] 9楼已贴
回复 点赞
引用 8 楼 hui1202 的回复:
。。数据库还有行号这一说????? 那我查一个按行号删,同时别人删了中间一批这行号你拿了有什么用。。
肯定有,也可以叫序号。一般在成绩排名需要知道排名的地方使用
回复 点赞
sqlserver示例 select *,ROW_NUMBER() OVER(ORDER BY UserID asc) as '序号' from UserInfo
回复 点赞
hui1202 05月12日
。。数据库还有行号这一说????? 那我查一个按行号删,同时别人删了中间一批这行号你拿了有什么用。。
回复 点赞
NJHouse_JFSJ 是你的表,这样查就每个都有行号 了 SELECT @num := @num + 1 as num ,b.jfsj FROM (SELECT @num:=0)a, NJHouse_JFSJ b 如果是oracle,就是用rownum()
回复 点赞
mysql示例 SELECT @num := @num + 1 as num,''as AA1,'' as AA2 FROM (select 0 union all select 1 union all select 2 ) t1, (select 0 union all select 1 union all select 2 ) t2, (select 0 union all select 1 union all select 2 ) t3, (select 0 union all select 1 union all select 2 ) t4, (select 0 union all select 1 ) t5, (SELECT @num:=0) r
回复 点赞
xuzuning 05月12日
数据库 家没有行号的概念 你想要做什么请只说
回复 点赞
gezhu1212 05月12日
引用 2 楼 YBcsdn1996的回复:
希望rownumber 能帮到你
Rownumber怎么用?能给段代码吗?
回复 点赞
发动态
发帖子
C#
创建于2007-09-28

8.5w+

社区成员

64.0w+

社区内容

.NET技术 C#
社区公告
暂无公告