2010年2月23日 星期二

oracle update語法

大家看到這標題因該會想這麼簡單的東西要說什麼吧!
SQL說簡單~簡單,但要難也是很…

我先承認我是個很不愛背東西的工程師
每次碰到update,alter,delete語法!
我都要上網查一下
大概就只有select不用背

為了以後還要上網查~我決定我要先寫一下基本語法!

INSERT

INSERT INTO [TABLE NAME]([欄名1],[欄名2], ……) VALUES ( 值1, 值2, ……); 


DELETE 
DELETE FROM [TABLE NAME] WHERE 条件;


UPDATE 
UPDATE [TABLE NAME] SET [欄名1]=值1, [欄名2]=值2, …… WHERE 条件;

好了!
為什麼我會特地寫這篇呢~
也是拖上一篇那批次的福,其實上一篇批次進去後我還必需要去別的TABLE抓資料去UPDATE資料
解說需求:
TABLE A
---------------------------
|     A1     |     A2     |
---------------------------

TABLE B
--------------------------------------
|     B1     |     B2     |     B3   |
--------------------------------------

這幾個只有B3型別是DATE其他都是文字

TABLE B 的PK B1,B2,B3

我的需求:
先在TABLE B 依B1分群抓出最大的日期(B3),再A1=B1 UPDATE A2=B2
如果B1<>A1 不 UPDATE A2
所以整個SQL 變這樣:

update A
   set A.A2 = (select s1.B2
                          from B s1,
                               (select B.B2 B2, max(B3) B3
                                  from A, B
                                 where B.B1= A.A1
                                 group by B.B2) s2
                         where s1.B1= s2.B2
                           and s1.B3= s2.B3
                           and A.A1= s1.B1)
 where exists (select * from B where A.A1= B.B1)

exists:資料是否存在

好了!下班~大家81

沒有留言:

張貼留言