討論區快速選單
知識庫快速選單
討論區最近新進100則主題 程式設計俱樂部Facebook粉絲團 軟體開發過程中有哪些資安漏洞?
[ 回上頁 ] [ 討論區發言規則 ]
如何同時使用3個SQL敘述
更改我的閱讀文章字型大小
作者 : s9327010(CHENGWEI)
[ 貼文 22 | 人氣 7185 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/4/29 下午 11:36:38
我要更新有一個資料表叫做A
裡面有3個資料行 B,C,D
B是DateTime,C是int只存0和1,D是int
我要更新D資料行的資料但是要指定時間最久,和C是1的那筆
請問SQL語法是這樣嗎
dim strSQL as string="Update A SET D=@D WHERE C=1 Order by B DESC"
是這樣嗎
我再跑他一直說Order之處附近與法不正確,我Order之後拿掉就OK....
然後因為WHERE是C=1都會更新= =
怎嚜只更新一筆就好,我看到好像是DISTINCT可是不會用
作者 : simon581923(老芋仔)
[ 貼文 46 | 人氣 622 | 評價 620 | 評價/貼文 13.48 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/5/7 下午 12:04:38
dim strSQL as string="Update A SET D=@D WHERE C=1 AND B = (SELELCT MAX(B) FROM A WHERE C=1)"
UPDATE指令不能用ORDER BY
作者 : kg1234g(king)
[ 貼文 16 | 人氣 1 | 評價 20 | 評價/貼文 1.25 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/7/16 下午 02:57:10
寫成:
<?
mysql_connect("主機位址","帳號","密碼");
mysql_select_qb("欲連結之資料庫");
$SQLStr="UPDATE A SET D=$D where C=1 order by B desc";
$res=mysql_query($SQLStr);
?>
即可...
作者 : kg1234g(king)
[ 貼文 16 | 人氣 1 | 評價 20 | 評價/貼文 1.25 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/7/16 下午 03:01:57
更正程式應該寫成:
<?
mysql_connect("主機位址","帳號","密碼");
mysql_select_qb("欲連結之資料庫");
$SQLStr="UPDATE A SET D=$D where C=1";
$res=mysql_query($SQLStr);
?>
才對(忘記UPDATE不能使用ORDER指令)...
作者 : marlon_wu(marlon) 貼文超過200則
[ 貼文 239 | 人氣 4226 | 評價 90 | 評價/貼文 0.38 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/7/17 下午 01:55:43
可用
Update A SET D=@D WHERE C=1 and B=(select min(B) from A where C=1)"
但不保證只更新一筆, 除非 B 是唯一的



作者 : kmcchen(深小藍) ASP優秀好手人氣指數超過10000點
[ 貼文 163 | 人氣 15680 | 評價 1090 | 評價/貼文 6.69 | 送出評價 4 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/7/17 下午 07:42:23

Update A SET D=@D WHERE C=1 and B in (select Top 1 B from A where C=1 order by B desc)
或是
Update A SET D=@D WHERE C=1 and B in (select Max(B) B from A where C=1)


>我要更新有一個資料表叫做A
>裡面有3個資料行 B,C,D
>B是DateTime,C是int只存0和1,D是int
>我要更新D資料行的資料但是要指定時間最久,和C是1的那筆
>請問SQL語法是這樣嗎
>dim strSQL as string=Update A SET D=@D WHERE C=1 Order by B DESC
>是這樣嗎
>我再跑他一直說Order之處附近與法不正確,我Order之後拿掉就OK....
>然後因為WHERE是C=1都會更新= =
>怎嚜只更新一筆就好,我看到好像是DISTINCT可是不會用
作者 : joery(Joery)
[ 貼文 7 | 人氣 330 | 評價 20 | 評價/貼文 2.86 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/10/1 下午 11:47:26
b DateTime
c int {0,1}
d int
=========================
Update A Set D=@value
Where B=(Select Max(B) From A)
     OR C=1
     ^^ 使用OR
如此一來 第一段會更新 Max(B)時間最大的那一筆
     或者 第二段 更新 C=1的資料 N筆
使用Access小驗證一下是ok的
更新前
=========================
2008/9/2 0 0
2008/10/1 0 0
2008/9/16 1 0
2008/9/28 1 0

更新後
=========================
2008/9/2 0 0
2008/10/1 0 111
2008/9/16 1 111
2008/9/28 1 111
作者 : joery(Joery)
[ 貼文 7 | 人氣 330 | 評價 20 | 評價/貼文 2.86 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/10/1 下午 11:55:56
Sorry 剛會錯意
要更新D資料行的資料但是要指定時間最久,和C是1的那筆
原筆者之意是只要更新一筆呀!
那就如同先前大大的
把我的 OR改成And

 板主 : 徵求中
 > 資料庫設計與應用 - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - 資料庫設計與應用 - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
資料庫設計與應用
1 ㄉ一ˊㄎㄜˋ 350 
2 好說 120 
3 BlueTulip 110 
4 老芋仔 90 
5 坤哥 80 
6 cnliou 80 
7 小朱 60 
8 HKLN.net 60 
9 小元元 60 
10 Aries 50 
資料庫設計與應用
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
0.0625