Re: [SQL ] 恭賀開板順便發問
※ 引述《razor (=_=)》之銘言:
: ※ 引述《forgmonkey (悲情城市之悲情程式猿)》之銘言:
: : mysql下 primary key可以設定auto increase
: : 他實作方式是會紀錄一個數字
: : 每次Insert一筆資料就會拿這個數字當primary key 並且遞增之
: : 但是我遇到一個問題... 今天我新增10個資料
: : 就有主鍵1~10的這幾筆資料
: : 然後刪掉4 ,6, 剩下8筆
: : 然後再新增一筆 我希望他會成為主鍵4而不是11
: : 能夠在SQL的語法那邊就解決掉嘛?
: : 還是必須每次插入都要用程式檢查最小的空欄是哪一個?
: : 不過我想這種方式因該load太大吧?
: 這問題可簡化為這樣的問題:試查詢缺漏號之前的最大流水號.
: 以你的例子來說,就是用一個查詢找出(3,5)這組流水號集合.
: 這組流水號集合分別加1,變成(4,6),就是可填補的空缺號碼.
: 上述查詢可這樣做:
: Select pkID As x From table1
: Where (Select count(*) From table1 Where pkID = x + 1) = 0
必須承認這樣做是錯的,
正確的做法是,
SELECT pkID AS x FROM table1 AS a
WHERE (SELECT count(*) FROM table1 AS b WHERE b.pkID = a.pkID + 1) = 0
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.137.13.66
→
07/19 02:36, , 1F
07/19 02:36, 1F
討論串 (同標題文章)
Database 近期熱門文章
PTT數位生活區 即時熱門文章