首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

SQL联查有关问题

2012-02-05 
SQL联查问题有表A和表B现在要查询表A的所有字段信息(N十个字段)但是其中一个字段的值为空,要从表B取得相对

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 什么的(本人习惯偷懒...^_^)

[解决办法]

SQL code
得到表中除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下入手
[解决办法]
SQL code
动态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)
[解决办法]
的确够懒的。
告诉你一个办法,生成查询语句后删除之。

热点排行