一个表字段的值作为另一个表名称查询

livdan 2010-04-12 10:37:48
如何查询一个表字段作为条件对另一个表查询
悬赏分:10 - 离问题结束还有 14 天 22 小时
如表a
aid afid
1 1
2 2
和表b
fid fname
1 Temperature
2 Humidity
想这么查
select * from (select fname from b where fid=(select afid from a))
我想把fname字段作为表名来查能查吗
提示')' 附近有语法错误。
...全文
267 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
livdan 2010-04-12
  • 打赏
  • 举报
回复
多谢各位,从别处找到了答案,结了
declare @name nvarchar(30),@sql nvarchar(200);
select @name=fname from b where fid=1;--条件
select @sql='select * from '+@name;
exec (@sql);
--小F-- 2010-04-12
  • 打赏
  • 举报
回复
select * from (select fname from b where fid=(select afid from a))t
dawugui 2010-04-12
  • 打赏
  • 举报
回复
[Quote=引用楼主 qindanloves 的回复:]
如何查询一个表字段作为条件对另一个表查询
悬赏分:10 - 离问题结束还有 14 天 22 小时
如表a
aid afid
1 1
2 2
和表b
fid fname
1 Temperature
2 Humidity
想这么查
select * from (select fname from b where fid=(select afid from a))
我想把……
[/Quote]
这需要使用动态语句拼接技术.
参考如下:
如何根据一个表某个字段的内容查询另一个表

有一表a

lccode
gz01
gz03
gz05

一表b

sku gz01 gz02 gz03 gz04 gz05
aa 5 3 1 0 2

请问如何根据表a的记录集得到查询表b的字段
如:

select gz01,gz03,gz05 from b

请问如何实现?


create table A(lccode varchar(10))
insert A select 'gz01'
union all select 'gz03'
union all select 'gz05'

create table B(sku varchar(10), gz01 int, gz02 int, gz03 int, gz04 int, gz05 int)
insert B select 'aa', 5, 3, 1, 0, 2

declare @sql varchar(8000)
set @sql='select '
select @sql=@sql+lccode+',' from A
select @sql=left(@sql,len(@sql)-1), @sql=@sql+' from B'
exec(@sql)
gz01 gz03 gz05
----------- ----------- -----------
5 1 2

htl258_Tony 2010-04-12
  • 打赏
  • 举报
回复
结果是怎样的?

22,206

社区成员

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

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