iT邦幫忙

0

SQL如何依欄位自動編碼

匿名 2012-06-01 16:28:509214 瀏覽

如何建立一個名為序號的欄位,然後讓他依照ITEM的項目自動編碼

2
mrhsieh
iT邦好手 4 級 ‧ 2012-06-04 09:37:44
最佳解答

使用Row_Number的Partition語法來處理,但此指令要MSSQL 2005版本以上才有。
例:Select Row_Number() OVER(Partition by item order by item ) AS '序號',
Item
From TableName

4
player
iT邦大師 1 級 ‧ 2012-06-01 19:48:01

在Insert時, 先select 出同樣ITEM的筆數
再加1, 做為要Insert到"序號"欄位的值

不過建議最好能用交易機制包起來你的Insert
不然如果同時間有2筆以上Insert時
序號會算錯

4
wiseguy
iT邦超人 1 級 ‧ 2012-06-02 00:09:08

這個欄位沒有什麼意義,因為隨時可以從資料庫 select 出同類 ITEM 並賦與它們序號。你這樣把序號填在欄位上,那如果刪除其中一個,豈不是要重排一次同類 ITEM 嗎?這是更沒意義的事。
假如你只是想要把它們新增先後當做排序規則,倒不如放個《加入的時間》還來得有意義。

賽門 iT邦超人 1 級 ‧ 2012-06-02 11:11:10 檢舉

iT邦幫忙MVPwiseguy提到:
倒不如放個《加入的時間》還來得有意義

對! 我在這類應用經常會以Timestamp欄位來排序.
然後在畫面上的表格中, 按排序來加個序號即可.

我要發表回答

立即登入回答