求教sql语句并散分

yibotiemen 2003-08-15 01:40:02
select * from usertable where userage>21
查询用户中年龄大雨21岁的人,但是我不想用*来查询所有的,我不需要其中的某一个字段,因为字段特别多,要来列举我要要的就太麻烦了。
虽有办法写一个sql语句仅仅排除我不需要的某一个两个字段?其他字段照常查询?


up有分,特别经典的回答将另外开帖子给分

给200分,结果说不能给这么多,没办法
...全文
47 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Muzhu 2003-08-15
  • 打赏
  • 举报
回复
复杂
zzfan25 2003-08-15
  • 打赏
  • 举报
回复
好复杂
看不懂
dp5593 2003-08-15
  • 打赏
  • 举报
回复
无聊
liukaiii 2003-08-15
  • 打赏
  • 举报
回复
呵呵 我觉得定这个比把字段都列出来还麻烦呢
hqlsy 2003-08-15
  • 打赏
  • 举报
回复
我不会,接分
nboys 2003-08-15
  • 打赏
  • 举报
回复
declare @ varchar(8000),@name varchar(100)
set @name='user'
set @=''
select @=@+'['+@name+']'+'.'+rtrim(name)+',' from syscolumns where id=object_id('tablename') and name<>'col1' and name<>'col2' and.........
set @=left(@,len(@)-1)
exec('select '+@+' from tablename as [user]')
hjb111 2003-08-15
  • 打赏
  • 举报
回复
最好的办法是创建一个视图吧!
create view v_col1
as
select col1,col2,... from usertable where userage>21
go

以后你可以用:select * from v_col1就行了!这样不是很方便吗?
pengdali 2003-08-15
  • 打赏
  • 举报
回复
declare @ varchar(8000)
set @=''
select @=@+'usertable.'+rtrim(name)+',' from syscolumns where id=object_id('usertable') and name<>'你不要的列名'
set @=left(@,len(@)-1)
exec('select '+@+' from usertable where userage>21')
caiyunxia 2003-08-15
  • 打赏
  • 举报
回复
如此有必要吗
愉快的登山者 2003-08-15
  • 打赏
  • 举报
回复
declare @sql varchar(300)
set @col = 'item'
select @s = count(*) from syscolumns as A left join sysobjects as B
on A.id = B.id
where B.name = 'a1'
print @s
set @sql = 'select ""'
if @s > 2
begin
set @i = 1
while exists (select * from syscolumns as A left join sysobjects as B
on A.id = B.id where B.name = 'a1' and A.colorder >= @i and (A.name) <> @col )
begin
select top 1 @sql = @sql + ',' + A.name, @i = A.colorder from syscolumns as A left join sysobjects as B
on A.id = B.id where B.name = 'a1' and A.colorder >= @i and (A.name) <> @col
set @i = @i +1
end
end
set @sql = @sql + ' from a1'
print @sql
exec (@sql)
yibotiemen 2003-08-15
  • 打赏
  • 举报
回复
带点的怎么做啊?
如exec('select user.'+@+' from usertable as user where user.userage>21')
因为我是复合的
amtyuranus 2003-08-15
  • 打赏
  • 举报
回复
升星中。。。。。请给分
pengdali 2003-08-15
  • 打赏
  • 举报
回复
declare @ varchar(8000)
set @=''
select @=@+rtrim(name)+',' from syscolumns where id=object_id('usertable') and name<>'你不要的列名'
set @=left(@,len(@)-1)
exec('select '+@+' from usertable where userage>21')
pengdali 2003-08-15
  • 打赏
  • 举报
回复
declare @ varchar(8000)
set @=''
select @=@+rtrim(name)+',' from syscolumns where id=object_id('usertable') and name<>'你不要的列名'
set @=left(@,len(@)-1)
exec('select '+@+' from usertable where userage>21')
97866 2003-08-15
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/2149/2149758.xml?temp=.8088648 (大力的解答)

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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