sql查询一张表多列对应另一张表的值

2024年11月18日 06:01
有2个网友回答
网友(1):

恩,可以实现的。
简单的做法是写俩sql,
SELECT name FROM SysColumns WHERE id=Object_Id(‘a表')
这个是搜所有字段了,当然你也可以对这个name就是字段名字做限制,比如 like ‘1%’这种的。
然后得到的字符串,程序里拼出来=s
这样 select +‘s’ from b 表 就行了。。

如果单纯想sql实现。那么需要写个存储过程,在里头把字符串拼出来。然后返回搜索b表的数据集就可以了。

希望可以帮到你。

网友(2):

给出的描述不是很清晰,给出的例子比较简单,不知道能不能覆盖所有情况,
下面给出一些提示和思路,如果有问题可以继续追问。
环境—oracle9i
一、建表:
create table zhidao_20131010_1_tab1
(id varchar2(2),
account1 varchar2(10),
account2 varchar2(10),
account3 varchar2(10));

create table zhidao_20131010_1_tab2
(id varchar2(2),
account varchar2(10),
accname varchar2(10));
二、插入记录:
insert into zhidao_20131010_1_tab1
select '1','1234','2345',null from dual;

insert into zhidao_20131010_1_tab2
select '1','1234','阿斯顿' from dual
union all
select '2','2345','阿' from dual
union all
select '3','4567','二' from dual
;
commit;
三、语句:
select rownum,accname from zhidao_20131010_1_tab2
where account in (
select account1 from zhidao_20131010_1_tab1
union all
select account2 from zhidao_20131010_1_tab1
union all
select account3 from zhidao_20131010_1_tab1);
四、查询结果:
ROWNUM ACCNAME
1 阿斯顿
2 阿