全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2312
推到 Plurk!
推到 Facebook!

請教各位先進一個 Update SQL 的問題!

尚未結案
Tomas.Chen
一般會員


發表:5
回覆:6
積分:2
註冊:2003-11-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-19 22:33:08 IP:220.139.xxx.xxx 未訂閱
請教各位先進一個 Update SQL 的問題!... 我有一個Table,欄位如下: ------------------ Sex(性別) 字串欄位 '男' or '女' Age(年齡) 數字欄位 Money(存款) 數字欄位 ------------------ 如果我想利用 Update 的方式,將 Sex='男' and Age=20 中(可能會超過一筆)最後一筆資料的 Money(存款)加上 10% (除了最後一筆資料外,其餘符合 Sex='男' and Age=20 條件者不更改),請問SQL 語法要如何下!? 再此先行謝過啦!...
seaturn99
版主


發表:69
回覆:427
積分:214
註冊:2003-08-25

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-20 10:18:15 IP:211.76.xxx.xxx 未訂閱
引言: 請教各位先進一個 Update SQL 的問題!... 我有一個Table,欄位如下: ------------------ Sex(性別) 字串欄位 '男' or '女' Age(年齡) 數字欄位 Money(存款) 數字欄位 ------------------ 如果我想利用 Update 的方式,將 Sex='男' and Age=20 中(可能會超過一筆)最後一筆資料的 Money(存款)加上 10% (除了最後一筆資料外,其餘符合 Sex='男' and Age=20 條件者不更改),請問SQL 語法要如何下!? 再此先行謝過啦!...
Tomas.Chen 您好 : Update MyTable SET Money=Money*1.1 WHERE Sex='男' and Age=20; PS.如果您資料庫的運算符號不是 * ,那就將其改成資料庫定義的乘法函式即可 ---- 我只會兩件事,這也不會,那也不會 眼見不一定為真 ----
Tomas.Chen
一般會員


發表:5
回覆:6
積分:2
註冊:2003-11-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-03-20 12:17:27 IP:220.139.xxx.xxx 未訂閱
謝謝 SouthWind 的回覆...    但是我的目的只要更新最後一筆,而不是所有符合 Sex='男' and Age=20 的資料(符合條件的資料可能很多筆),該如何下 SQL 語法呢?
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-03-20 22:03:46 IP:61.62.xxx.xxx 未訂閱
引言: 但是我的目的只要更新最後一筆,而不是所有符合 Sex='男' and Age=20 的資料(符合條件的資料可能很多筆),該如何下 SQL 語法呢?
Hi, 我想是你的 只要更新最後一筆 的條件很怪, 或是說不充份, 在資料庫中的資料是沒有前後順序的, 除非你另外有流水號的欄位, 或是依據產生日期的欄位, 才有可能整理出所謂的 最後一筆 的條件, 是否可以更明確的說明你要更新的條件呢?
seaturn99
版主


發表:69
回覆:427
積分:214
註冊:2003-08-25

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-03-21 03:26:03 IP:211.76.xxx.xxx 未訂閱
引言:
引言: 但是我的目的只要更新最後一筆,而不是所有符合 Sex='男' and Age=20 的資料(符合條件的資料可能很多筆),該如何下 SQL 語法呢?
Hi, 我想是你的 只要更新最後一筆 的條件很怪, 或是說不充份, 在資料庫中的資料是沒有前後順序的, 除非你另外有流水號的欄位, 或是依據產生日期的欄位, 才有可能整理出所謂的 最後一筆 的條件, 是否可以更明確的說明你要更新的條件呢?
我的疑問跟 timhuang Sir 一樣,怎麼會只更新最後一筆資料?? 怪怪的 不過還是寫一下大概的做法 : 假設您有設 Primary Key (有流水號).. 先用下面的 SQL command 取出最後一筆的 PK_ID SELECT Max(PKField) FROM MyTable WHERE Sex='男' and Age=20; 或是利用 SELECT someUniqeField FROM MyTable WHERE Sex='男' and Age=20; 用 While 與 Query.EOF , Query.Next 搭配便可找到最後一筆的 某個可供唯一識別的欄位.. 最後在之前寫的 SQL 上寫入 :PKField 取出的 PK_ID 或是 someUniqeField 的值.. Update MyTable SET Money=Money*1.1 WHERE Sex='男' and Age=20 and PKField=:PKField; ---- 我只會兩件事,這也不會,那也不會 眼見不一定為真 ----
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-03-22 09:04:17 IP:210.65.xxx.xxx 未訂閱
Hi Tomas.Chen,    我也贊同 timhuang 的看法 以下 SQL Command 為在有 Primary Key 的狀況下所下的
UPDATE  MYTABLE
SET     MONEY = MONEY * 1.1
WHERE   SEX = '男'
AND     AGE = 20 
AND     PKFIELD =  (SELECT  MAX(PKFIELD)
                    FROM    MYTABLE T
                    WHERE   T.SEX = MYTABLE.SEX
                    AND     T.AGE = MYTABLE.AGE)
---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
yachanga
資深會員


發表:24
回覆:335
積分:296
註冊:2003-09-27

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-03-22 16:18:56 IP:211.74.xxx.xxx 未訂閱
Hi,   不知道你用什麼資料庫   若是 Oracle 本身儲存在資料庫有一個 ROWNUM 參數..   Ex: Select ROWNUM, column1 from table        where sex='MAN' and age=20    用以上SQL 就可以知道每一筆資料儲存的編號....  再用以上ROWNUM來update     ~悠遊法國號~
系統時間:2024-05-19 2:31:41
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!