两张表的结构如下:
A表:
id key_info
1 kname
2 kage
B表:
re_id kname
1 小王
2 小李
求教, 如何把A表key_info字段里的kname值, 当做B表的查询字段名
错误示例: select * from B where (select key_info from A where id=1)='小王'
这样的结果实际等于 : select * from B where 'kname'='小王' 结果为空
子查询 ms?sql
------解决方案--------------------
[code=sql]
create table #ta(id int,key_info varchar(10))
insert into #ta
select 1,'kname'
union all select 2,'kage'
create table #tb(re_id int,kname varchar(10))
insert into #tb
select 1,'小王'
union all select 2,'小李'
go
declare @sql varchar(1000),@keyname varchar(100)
select @keyname=key_info from #ta where id=1
set @sql='select * from #tb where '+@keyname+'=''小王'''
exec (@sql)
/*
re_id kname
----------------------
1 小王
*/
[code]
------解决方案--------------------
这样呢,能符合你的要求不:
create table A(id int,key_info varchar(100))
insert into a
values(1,'kname')
insert into a
values(2,'kage')
create table B(re_id int,kname varchar(100))
insert into b
values(1,'小王')
insert into b
values(2,'小李')
select *
from B
where case when (select key_info from A where id=1) = 'kname'
then kname
end = '小王'