本人想从一张表中的六个字段的值插入到另外一张表中的六个字段,能否用一条SQL语句解决?
想更新EHU_AWB中的        MAWB_NO,FLIGHT_NO,ETD,ETD_TIME,ETA,ETA_TIME,这六个字段的值,他们分别是从
EHU_CNL这张表中查询出来的MAWB_NO,FLT_NO,FLT_DATE,FLT_TIME,ETA_DATE,ETA_TIME值。
两张表的关联字段为CNL_NO
EHU_AWB表的主键是AWB_NO,现在想更改AWB_NO值为XXX的某条记录中的六个字段,六个字段是根据CNL_NO在EHU_CNL中查询的结果。求解一条SQL。

解决方案 »

  1.   


    update EHU_AWB ea
    set (MAWB_NO,FLIGHT_NO,ETD,ETD_TIME,ETA,ETA_TIME)=
        (select MAWB_NO,FLT_NO,FLT_DATE,FLT_TIME,ETA_DATE,ETA_TIME
         from EHU_CNL ec where ea.AWB_NO=ec.CNL_NO and AWB_NO='xxxx')
    where exists
    (select 1 from EHU_CNL ec where ea.AWB_NO=ec.CNL_NO and AWB_NO='xxxx')
      

  2.   

    1.你的这个awb_no是六个字段的字符的简单的连接吗?
    2.两帐表通过CNL_NO关联,是一对一的关系吗?
    3.CNL_NO在EHU_CNL中查询的结果,查询条件是什么呢?
      

  3.   


    --------豁然大悟
    update EHU_AWB a
       set (MAWB_NO, FLIGHT_NO, ETD, ETD_TIME, ETA, ETA_TIME) = (select MAWB_NO,
                                                                        FLT_NO,
                                                                        FLT_DATE,
                                                                        FLT_TIME,
                                                                        ETA_DATE,
                                                                        ETA_TIME
                                                                   from EHU_CNL b
                                                                  where a.CNL_NO =
                                                                        b.CNL_NO
                                                                    and b.AWB_NO =
                                                                        'xxxx')
      

  4.   

    merge into EHU_AWB a using EHU_CNL b on (a.CNL_NO=b.CNL_NO)
    when matched then
    update set a.MAWB_NO=b.MAWB_NO,a.FLIGHT_NO=b.FLT_NO,
    a.ETD=b.FLT_DATE,a.ETD_TIME=b.FLT_TIME,a.ETA=b.ETA_DATE,a.ETA_TIME=b.ETA_TIME
    where a.AWB_NO=XXX
      

  5.   

    有一个疑问?两张表的关联字段为CNL_NO是值两张表中都包含CNL_NO字段吗?如果是那么
    select * from EHU_AWB a, EHU_CNL b where a.CNL_NO = b.CNL_NO该查询结果或许
    不止一条记录,而EHU_AWB表的主键是AWB_NO,说明select * from EHU_AWB where AWB_NO=
    xxx是只有一条记录的,这个时候多条记录无法插入一条特定的记录。
    如果修改一下EHU_AWB表中AWB_NO和EHU_CNL中CNL_NO关联,则
    update EHU_AWB
    set (MAWB_NO,FLIGHT_NO,ETD,ETD_TIME,ETA,ETA_TIME)=
        (select MAWB_NO,FLT_NO,FLT_DATE,FLT_TIME,ETA_DATE,ETA_TIME from EHU_CNL 
         where cnl_no = xxx)
    where AWB_NO = xxx