日期:2014-05-19  浏览次数:20524 次

求一条SELECT语句!
一个表有50列假如,现在我想把他和其他表防到一起到试图里面,我现在需要他的49列,有一列和另一个表关联,我不需要的,我不想在select时候把每一列都写一变,比如a.1,a.2这样子,有什么方法可以还这样做到呢,比如select*后去掉某些列这种写法!不知道怎么写哦!谢谢帮忙!

------解决方案--------------------
--从系统表中取字段生成动态语句
--table_name:你要查找的表名
--not in( 'col1 ', 'col2 '...):不要的列名

declare @sql varchar(8000)
set @sql= ' '
select @sql=@sql+ ', '+[name] from (select [name] from syscolumns where object_id( 'table_name ')=[id] and [name] not in ( 'col1 ', 'col2 ')) A

set @sql= 'select '+stuff(@sql,1,1, ' ')+ ' from table_name '

exec (@sql)
------解决方案--------------------
得到表中除Col1、Col2的所有列

例如:userno_fm、userno_to
create table test(
num int identity(1,1),
userno_fm varchar(10),
userno_to varchar(10),
username varchar(10))
select * from test

declare @sql varchar(8000)
select @sql= ' '
select @sql=@sql+ ', '+[name] from
(select [name] from syscolumns where object_id(N '[test] ')=[id] and [name] not in ( 'userno_fm ', 'userno_to ')) A

set @sql= 'select '+stuff(@sql,1,1, ' ')+ ' from [test] '
--print @sql
exec (@sql)

drop table test