看板 Database 關於我們 聯絡資訊
※ 引述《starjou (周星星)》之銘言: 這是資料表架構設計跟邏輯上的問題。 : 有辦法用一行 sql 敘述對一個資料表中的某一列多次更新它的值嗎? : 我的意思是這樣: : 表 A 是員工表,表 B 是報酬表 : 表 B 中,一個員工可能有多筆報酬 : 我可以用 SELECT 把表 A 跟表 B JOIN 起來,如果一個員工有多筆報酬, : 就會有多筆資料,其中員工基本資料的部份是重覆的,報酬的部份則根據表 B : 而不同 : 但是如果我把這個 JOIN 的 table reference 用在 UPDATE 的時候, : 然後 SET 表 A 的本月報酬 = 表 A 的本月報酬 + 表 B.報酬 : 一個員工就只會更新一次,表 B 中只有第一筆資料處理到,其它則忽略, : 也沒有錯誤。 如果你要把 table B 的資料更新到 table A 。 如果不是進行每個月的結算, 這是否意味著你也必須把 table B 已經 merge 到 table A 的資料刪除掉? (不然 table B 那邊的資料勢必會被重複計算) 如果是進行每個月的結算,為何要把 table B 的資料 merge 到 table A ? 把 table A 跟 B JOIN 起來算 sum 產生一次輸出不就好了? : 變成只能先把資料用 SELECT 抓出來,再跑迴圈一行一行跑 UPDATE 了。 : 請問有辦法一行 SQL 做到嗎? 一行 SQL 為的是什麼? 效能嗎? 一行 SQL 不一定會比較快。 維護方便嗎? 一行 SQL 並沒有比較好維護吧? 爽度嗎? 有必要嗎? -- Linux is for people who want to know why it works. Mac is for people who don't want to know why it works. DOS is for people who want to know why it does not work. Windows is for people who don't want to know why it does not work. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.113.167.6