日期:2014-05-18  浏览次数:20597 次

SQL記錄篩選 語句怎樣寫
CREATE   TABLE   T1(
T1DH   VARCHAR(10),
PH   VARCHAR(20),
SL   Numeric(9,4)   )

CREATE   TABLE   T2(
T2DH   VARCHAR(10),
PH   VARCHAR(20),
SL   Numeric(9,4)   )

INSERT     INTO   T1  
SELECT   'T1A1 ', 'A ', '10 '
UNION   ALL
SELECT   'T1A1 ', 'B ', '5 '
UNION     ALL
SELECT   'T1A2 ', 'B ', '5 '
UNION   ALL
SELECT   'T1A2 ', 'C ', '5 '

INSERT   INTO   T2
SELECT   'T2A1 ', 'A ', '10 '
UNION   ALL
SELECT   'T2A1 ', 'B ', '5 '
UNION   ALL
SELECT   'T2A1 ', 'C ', '5 '
UNION   ALL
SELECT   'T2A2 ', 'B ', '5 '
UNION   ALL
SELECT   'T2A2 ', 'C ', '5 '

SELECT   *   FROM   T1
SELECT   *   FROM   T2
如何將   T2中的   'T2A1 '   , 'C ', '5 '     通過一條語句插入到T1中

insert   INTO   t1(T1DH,PH,SL)
SELECT   T1.T1DH,T2.PH,T2.SL
FROM   T2,T1
WHERE   T2DH= 'T2A1 '   AND   T1DH= 'T1A1 '       AND   NOT   EXISTS(SELECT   *   FROM   T1,T2   WHERE   T1DH= 'T1A1 '   AND   T2DH= 'T2A1 '   AND   T1.PH=T2.PH)
使t1中增加一條 'T1A1 ', 'C ', '5 '的記錄?



------解决方案--------------------
insert T1
select * from T2 as tmp
where T2DH= 'T2A1 ' and not exists
(select 1 from T1 where T1DH= 'T1A1 ' and PH=tmp.PH)

select * from T1

--result
T1DH PH SL
---------- -------------------- -----------
T1A1 A 10.0000
T1A1 B 5.0000
T1A2 B 5.0000
T1A2 C 5.0000
T2A1 C 5.0000

(5 row(s) affected)
------解决方案--------------------
marco08(天道酬勤)
 感謝你的回復,確實是高手。