当前位置: 代码迷 >> Sql Server >> SQL联查有关问题
  详细解决方案

SQL联查有关问题

热度:46   发布时间:2016-04-27 18:44:14.0
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 @[email protected]+','+[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)
------解决方案--------------------
的确够懒的。
告诉你一个办法,生成查询语句后删除之。
  相关解决方案