我想往一个表中插一条数据,但其中某一列的值需要从另一个表中关联取到。类似的SQL语句如下:
INSERT INTO TABLE_A
             (TABLE_A_AREA,TABLE_A_TIME,
                TABLE_A_SHORTNAME,TABLE_A_TEL,TABLE_A_ID) 
  VALUES ( SELECT TABLE_B_ID FROM TABLE_B_INFO WHERE TABLE_A_NAME = '西城',TO_CHAR(SYSDATE,'YYYY-MM-DD'),
            '王府井','199390382890',S_TABLE_A_ID.NEXTVAL)但我知道第二个SELECT的地方肯定不能这么用,我应该如何实现?还是必须先执行一条SQL语句,获取到这个值再插入到TABLE_A表中?

解决方案 »

  1.   

    关系很简单。
    表A中有字段:TABLE_A_AREA
    表B中有字段:TABLE_B_AREA 和TABLE_B_ID
    在插入表A字段TABLE_A_AREA时,需要从表B中根据字段TABLE_B_AREA 找出字段TABLE_B_ID,插入表A的字段TABLE_A_AREA.
      

  2.   

    INSERT INTO TABLE_A 
    (TABLE_A_AREA,TABLE_A_TIME,TABLE_A_SHORTNAME,TABLE_A_TEL,TABLE_A_ID)( SELECT
     TABLE_B_AREA,TABLE_B_TIME,TABLE_B_SHORTNAME,TABLE_B_TEL,TABLE_B_ID
    FROM TABLE_B_INFO WHERE TABLE_A_NAME = '西城')
      

  3.   

    看完这个我想有个问题,楼主你的TABLE_B_ID 和TABLE_A_NAME 值都是唯一对应的吗?TABLE_B_ID对应的TABLE_A_NAME 值有许多都是'西城'的话
    SELECT TABLE_B_ID FROM TABLE_B_INFO WHERE TABLE_A_NAME = '西城'  岂不是有多个值了吗
    这样你怎么向TABLE_A 插?再说根据你提供的关系这个where条件好像有问题呀?
      

  4.   

    INSERT INTO TABLE_A 
                (TABLE_A_AREA) 
     SELECT TABLE_B_ID FROM TABLE_B_INFO WHERE TABLE_A_NAME = '西城',TO_CHAR(SYSDATE,'YYYY-MM-DD'), 
                '王府井','199390382890',S_TABLE_A_ID.NEXTVAL);
      

  5.   

    不懂装懂INSERT INTO TABLE_A 
                (TABLE_A_AREA,TABLE_A_TIME, 
                    TABLE_A_SHORTNAME,TABLE_A_TEL,TABLE_A_ID) 
      SELECT TABLE_B_ID,TO_CHAR(SYSDATE,'YYYY-MM-DD'), 
                '王府井','199390382890',S_TABLE_A_ID.NEXTVAL
     FROM TABLE_B_INFO WHERE TABLE_A_NAME = '西城' 
      

  6.   


    INSERT INTO TABLE_A 
                   (TABLE_A_AREA,TABLE_A_TIME, 
                    TABLE_A_SHORTNAME,TABLE_A_TEL,TABLE_A_ID) 
    SELECT TABLE_B_ID ,TO_CHAR(SYSDATE,'YYYY-MM-DD'),'王府井','199390382890',S_TABLE_A_ID.NEXTVAL
      FROM TABLE_B_INFO WHERE TABLE_A_NAME = '西城' ;
                 
      

  7.   

    晕,不好意思lz我没看仔细,以为后面的都是where条件呢
    INSERT INTO TABLE_A 
                (TABLE_A_AREA,TABLE_A_TIME,TABLE_A_SHORTNAME,TABLE_A_TEL,TABLE_A_ID)  
     SELECT TABLE_B_ID,TO_CHAR(SYSDATE,'YYYY-MM-DD'),'王府井','199390382890',S_TABLE_A_ID.NEXTVAL 
    FROM TABLE_B_INFO WHERE TABLE_A_NAME = '西城';