表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实现

解决方案 »

  1.   

    如果表A查出来是单值,用:
    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 查询条件)
      

  2.   

    楼上的没有理解题意。
    SNO是由表A查询出来的,并不是已知条件。
    已知条件只有表A的字段名。
      

  3.   

    应该不能实现,你想查询的字段名来自另一表值,只能在存储过程中使用动态SQL
      

  4.   

    没太明白楼主的意思,不知道是不是这样啊
    select * from b where  SNAME = (select NAME_S_A from a where条件)
      

  5.   

    是这个意思吗
    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;
      

  6.   

    用子查询和IN 会降低查询速度
    数据少不会有影响,但数据多了,就慢
    推荐用表联结
    SELECT b.* FROM b,a WHERE b.no =a.no AND sno(+)=name_s_a AND 其它查询条件