SQL联查问题
有表A和表B
现在要查询表A的所有字段信息(N十个字段)
但是其中一个字段的值为空,要从表B取得相对应的值(根据表A关键字段ID关联)
这样是可以获得结果:
select A.字段1, A.字段2, B.字段3, A.字段n...... from A, B where A.ID = B.ID
但是要写上所有除了B.字段3的所有字段,能否有其他方式?
select * from A 什么的(本人习惯偷懒...^_^)
[解决办法]
得到表中除Col1、Col2的所有列例如:userno_fm、userno_tocreate table test( num int identity(1,1), userno_fm varchar(10), userno_to varchar(10), username varchar(10))select * from testdeclare @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
[解决办法]
动态构造..从syscolumns下入手
[解决办法]
动态sqldeclare @sql varchar(8000)select @sql='select 'A.*'+select (select ','+cast(column_name as varchar) as [text()]from information_schema.columnswhere table_name='B' and column_name<>'字段3'for xml path(''))+' from A,B where A.ID = B.ID 'exec (@sql)
[解决办法]
的确够懒的。
告诉你一个办法,生成查询语句后删除之。