Database 板


LINE

資料庫名稱:ms sql server 資料庫版本:2008 各位好 昨天看到了一個update 寫法 如下 T1的欄位和資料如下 ID No Name 1 1 d 2 1 d 3 1 d T2的欄位和資料如下 ID No Na Nc 1 1 A X 4 1 B Y 7 1 C Z update A set Name=B.Nc from T1 A right join T2 B on A.No=B.No where B.Na in ('A','B','C') 如果只看 from 之後的語法 則會撈出九筆資料 但T1其實只有3筆資料 所以每筆都重複了3次 因此update後 到底會更新3筆 還是9筆? 我實際測試後得到 (3 個資料列受到影響) 也就是說 T1的每筆資料 都只會更新一次 既然如此 那T1的Name到底是要更新成 T2的哪個Nc值 是X 是Y 還是Z ? 我透過把 where B.Na in ('A','B','C') 改成 where where B.Na in ('B','C') ,where B.Na in ('A','C') ,where B.Na in ('A','B') 等幾種不同條件去觀察 但還是看不出更新的準則到底為何? 我本來是猜先出現的先更新 第二次以後出現的就不管他 但好像也不是 可以確定的是 如果撈出來的資料 T1部分每筆資料都只出現一次 EX: where B.Na='A' 這樣更新就很明確 不會有模稜兩可的情況了 所以 是不是上面的寫法不夠好 不夠明確 應該要更改? 謝謝 -- ※ 文章網址: http://webptt.com/m.aspx?n=bbs/Database/M.1411614397.A.9F5.html
1F:推 GoalBased: 說明一下你的需求吧 你是要把T1的name 改成甚麼? 09/25 12:20
我的需求僅是了解這樣的語法是不是有問題?
2F:→ SeanBoog: 寫法對 但結果不是你要的 那你想要的是什麼? 09/25 12:34
3F:推 GoalBased: 同樓上..語法沒錯..但不知道你要的是甚麼阿 09/25 12:50
4F:→ moyasi: 執行會過寫法就一定是對的 重點是你想要的是什麼 09/25 13:13
5F:推 GoalBased: 如果你希望得到的Nc是xxx 那你就用left join 09/25 14:04
6F:→ GoalBased: 至於right join的順序為什麼會變成第一個和最後一個 09/25 14:04
7F:→ GoalBased: 來回交錯,我測了半個小時,還是不知道為什麼 09/25 14:04
其實這正是我想知道的 如果我想要透過T2的某欄位來update T1的某欄位 應該要用left join 我不知道的是 萬一誤寫成right join 導致T1同一筆資料出現好幾次 update時會怎樣? 實測就是如內文所述那樣 和你說的交錯 ※ 編輯: kisha024 (203.64.120.93), 09/25/2014 14:23:46
8F:推 GoalBased: 我也跟你說了 我不知道 QAQ 09/25 14:41
沒關係 還是很感謝大家的回答 我覺得仍然很有幫助 我上面說的不是很正確 應該說不管是left join 還是right join 只要 on 和where 過濾得宜 讓想要update的那張table的每一筆資料最多都只出現一次 這樣update就不會有模稜兩可的情況了 ※ 編輯: kisha024 (203.64.120.93), 09/25/2014 15:27:33
9F:推 jengting: 請參考這篇討論 http://ppt.cc/Y9MT 09/26 07:52
10F:→ kisha024: 感謝 10/02 10:53







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP