Select 问题,在线等

xinyu_1980 2003-12-28 06:02:17
现有表A结构为: Name,Age,Sex......
数据:张三,10,男
李四,12,男
王五,14,女
老六,45,男
.....

我现在想通过SELECT查询出这样的结果:
查询全部时:
ID,NAME,AGE,SEX
1,张三,10,男
2,李四,12,男
3,王五,14,女
4,老六,45,男
.....
查询部分:
ID,NAME,AGE,SEX
1,王五,14,女
2,老六,45,男
.....
也就是给查询出的结果加上一个序号
...全文
25 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xinyu_1980 2003-12-28
  • 打赏
  • 举报
回复
zjcxc(邹建) ,数据少可以这样写,如多数据量过大时应该怎样写??
zjcxc 元老 2003-12-28
  • 打赏
  • 举报
回复
否则的话,就只能用临时表了.
zjcxc 元老 2003-12-28
  • 打赏
  • 举报
回复
--下面是测试

--测试数据
declare @t table(Name varchar(10),Age int,Sex varchar(2))
insert into @t
select '张三',10,'男'
union all select '李四',12,'男'
union all select '王五',14,'女'
union all select '老六',45,'男'

--查询全部
select id=(select sum(1) from @t where name<=a.name),*
from @t a order by name

--查询部分
select id=(select sum(1) from @t where name<=a.name and age>12),*
from @t a
where age>12
order by name

/*--测试结果

id Name Age Sex
----------- ---------- ----------- ----
1 老六 45 男
2 李四 12 男
3 王五 14 女
4 张三 10 男

(所影响的行数为 4 行)


id Name Age Sex
----------- ---------- ----------- ----
1 老六 45 男
2 王五 14 女

(所影响的行数为 2 行)
--*/
zjcxc 元老 2003-12-28
  • 打赏
  • 举报
回复
--查询部分

select id=(select sum(1) from 表A where 姓名<=a.姓名 and age>13),*
from 表A a
where age>13
order by 姓名
zjcxc 元老 2003-12-28
  • 打赏
  • 举报
回复
--如果你的姓名不重复,而且按姓名排序的话,可以直接用:

select id=(select sum(1) from 表A where 姓名<=a.姓名),*
from 表A a order by 姓名
victorycyz 2003-12-28
  • 打赏
  • 举报
回复
select identity(int,1,1) as id,* into #t from tablename

select * from #t



drop table #t

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧