[SQL ] UPDATE有primary key的table?
看板Database (資料庫)作者grassboy2 (天才小胖子-活力花俏草兒)時間18年前 (2007/01/31 07:52)推噓8(8推 0噓 0→)留言8則, 4人參與討論串1/3 (看更多)
小弟使用的是MySQL…
有一個table他記錄了a年b班c號同學的成績為d
然後我把a b c合起來設一個primary key…
以下是table的內容
a b c d
1 1 1 95
1 1 2 93
1 1 3 79
1 1 4 80
1 1 5 44
1 1 6 100
:
:
:
table的特性是「在同樣的a和b下,c一定會從1開始遞增」
今天…我想把a=1,b=1,c=3給刪了…
為了要讓table的c值合理化…
我必須讓 a=1,b=1, c>3的都減1
所以很直觀的會下
UPDATE `table` SET `c` = (`c`-1)
WHERE `a`=1 AND `b` = 1 AND `c` > 3
可是…有時候table的資料排序沒有那麼規律…
所以`c`的值在更新有時候會產生「#1062 - Duplicate entry」的錯誤
所以…要刪除的話…就會變成要一條一條的下指令…
從c=4、c=5、c=6逐筆更新…
可是如果以後table裡的資料a=1、b=1、c有1~100…
然後我刪了c=1那筆記錄…
不就要再下99道指令修正?感覺有點效率不佳…
有辦法指定MySQL系統從c最小的開始整批更新嗎?
------------------------------------------------------
另外想要問一下…當我下1道更新99筆資料的Query…
他的執行效率比起 我下99道更新1筆資料的Query…
前者的效率有比較高嗎?
謝謝大家回答了><~
--
╔作者 grassboy2 來自 ptt.cc 的怒吼!
█ ◎P_GrassboyWebBBS版【http://WebGrassboy.twbbs.org】
Design By Grassboy@MDS 白日夢工作室 ╚─你現在還以為,瀏覽器不能打逼嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.214.146
推
01/31 10:25, , 1F
01/31 10:25, 1F
推
01/31 12:28, , 2F
01/31 12:28, 2F
推
01/31 12:34, , 3F
01/31 12:34, 3F
推
01/31 12:34, , 4F
01/31 12:34, 4F
推
01/31 13:56, , 5F
01/31 13:56, 5F
推
01/31 14:29, , 6F
01/31 14:29, 6F
推
01/31 17:01, , 7F
01/31 17:01, 7F
推
02/01 16:45, , 8F
02/01 16:45, 8F
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
完整討論串 (本文為第 1 之 3 篇):
Database 近期熱門文章
PTT數位生活區 即時熱門文章
-1
12