select的查询问题

xingyunzt 2004-08-28 01:12:07
select * from table可以察看全表的内容
select 列名 from table可以察看某一列的内容
但是如果不知道列名或者不想用列名想看第 2 列的内容要怎么写?

table
a b
1 2
3 4
如何写与 select b from table 等价的语句?
...全文
121 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuncai 2004-08-28
  • 打赏
  • 举报
回复
select Name from Syscolumns where id=object_id('表')
就知道列名了嘛
lalakid 2004-08-28
  • 打赏
  • 举报
回复
你不想知道2列的列名是什么,是为了省事
而事实上,却增加了很多麻烦事
所以劝你不要这样做
pbsql 2004-08-28
  • 打赏
  • 举报
回复
可以试一下,随便建个有三列的表,然后保存,看看系统表syscolumns中的colid、colorder,分别是1,2,3。然后把第二列在企业管理器中删除后保存再看一下,2已经没有了!

所以严谨一点如下:
declare @colName nvarchar(50)
set @colName=(select top 1 name from syscolumns where id=object_id(N't') and colorder not in(select top 1 colorder from syscolumns where id=object_id(N't') order by colorder) order by colorder)

exec('select '+@colName+' from t')
lzymagi 2004-08-28
  • 打赏
  • 举报
回复
不知道列名。知道表ID吧?在系统表中查出列名就可以了
pbsql 2004-08-28
  • 打赏
  • 举报
回复
二楼,colid=2时并不一定能取到值
chinaandys 2004-08-28
  • 打赏
  • 举报
回复
select * from syscolumns where object_id('表名')=id and name='列名'
WangZWang 2004-08-28
  • 打赏
  • 举报
回复
declare @colName nvarchar(50)
Select @colName=s.name from syscolumns s
inner join sysobjects b
on s.id=b.id
where b.id=object_id('表名') and colid=2

exec('select '+@colName+' from table')
zjmym 2004-08-28
  • 打赏
  • 举报
回复
必须先到系统表里查询出第2列的列名

34,590

社区成员

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

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