表A:
rowNO NAME_S_A
1 SNO
2 SNAME表B:
SNO SNAME SEX AGE
01 John M 18
02 Mary F 19请问,如何以表A中查出的NAME_S_A的值,做为表B的查询字段。
要求一段SQL实现
rowNO NAME_S_A
1 SNO
2 SNAME表B:
SNO SNAME SEX AGE
01 John M 18
02 Mary F 19请问,如何以表A中查出的NAME_S_A的值,做为表B的查询字段。
要求一段SQL实现
调试欢乐多
select * from b
where sno =
(select NAME_S_A from a where 查询条件)如果表A查出来是多值,用:
select * from b
where sno in
(select NAME_S_A from a where 查询条件)
SNO是由表A查询出来的,并不是已知条件。
已知条件只有表A的字段名。
select * from b where SNAME = (select NAME_S_A from a where条件)
CREATE OR REPLACE
PROCEDURE samuel_pro(
p_rowNum IN INT,
p_value IN VARCHAR2
)AS
v_name_s_a VARCHAR2(10);
v_sql VARCHAR2(255);
BEGIN
SELECT A.name_s_a INTO v_name_s_a FROM A WHERE A.rowno = p_rowNum;
v_sql := 'select * from b where '||v_name_s_a||' = '''||p_value||'''';
dbms_output.put_line(v_sql);
END;
数据少不会有影响,但数据多了,就慢
推荐用表联结
SELECT b.* FROM b,a WHERE b.no =a.no AND sno(+)=name_s_a AND 其它查询条件