cara menambah nilai kolom integer dengan 1 di SQL

92

Pertanyaan saya adalah

cara menaikkan nilai kolom dengan 1.

Misalnya, kolom IDmemiliki nilai 1,2,3,4, ..

Sekarang ketika saya memperbarui tabel ini maka IDkolom harus bertambah 1,

Sekarang IDakan menjadi 2,3,4,5, ..

Varinder
sumber
sampel apa pun tentang yang Anda inginkan? kenaikan nilai kolom sebesar 1 untuk 1 baris? semua baris? yang mana tabel Anda (DDL)? sampel data (DML)?
Kiquenet

Jawaban:

155

Untuk menambahkan satu ke setiap nilai di tabel ...

UPDATE myTable
SET ID = ID + 1

Untuk membuat nilai baru, satu lebih dari nilai tertinggi sebelumnya (biasanya), gunakan kolom dengan IDENTITAS

gbn
sumber
39
Harap dicatat bahwa ini tidak berfungsi jika kolomnya NULL. Kolom NULL tetap NULL, bahkan setelah bertambah. Untuk menyelesaikan ini, gunakan ISNULLpernyataan seperti ini: UPDATE myTable SET ID = ISNULL(ID, 0) + 1(Diambil dari jawaban SO ini )
Uwe Keim
SET [Lic] = [Lic] + @dif. Catatan variabel @dif bisa positif, 0, atau negatif
Kiquenet
43

Jika Anda ingin memiliki nomor unik untuk setiap baris yang dibuat secara otomatis, ini adalah IDENTITAS sesuai jawaban Neil.

Jika setiap kali Anda memperbarui tabel, Anda ingin meningkatkan nilai (yaitu, mereka bukan kunci):

Update MyTable
Set IDColumn = IDColumn + 1
Where <whatever>
kaj
sumber
8

Coba ini:

Update Emp set testCount = ISNULL(testCount, 0) + 1 where testId=1
kishor soneji
sumber
1

Anda dapat menggunakan IDENTITYyang akan melakukan ini untuk Anda.

CREATE TABLE [dbo].[MyTable](
    [MyTableID] [int] IDENTITY(1,1) NOT NULL,
    -- Other columns
)

Saat Anda memasukkan catatan pertama Anda, Anda akan mendapatkan Id1.

Neil Knight
sumber
1

Di Oracle, kodenya sedikit lebih rumit.

Anda harus membuat bidang kenaikan otomatis dengan objek urutan (objek ini menghasilkan urutan angka).

Gunakan sintaks CREATE SEQUENCE berikut:

CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10

Kode di atas membuat objek urutan yang disebut seq_person, yang dimulai dengan 1 dan akan bertambah 1. Ini juga akan menyimpan hingga 10 nilai untuk kinerja. Opsi cache menentukan berapa banyak nilai urutan yang akan disimpan dalam memori untuk akses lebih cepat.

Untuk memasukkan record baru ke dalam tabel "Persons", kita harus menggunakan fungsi nextval (fungsi ini mengambil nilai berikutnya dari urutan seq_person):

INSERT INTO Persons (ID,FirstName,LastName)
VALUES (seq_person.nextval,'Lars','Monsen')

Pernyataan SQL di atas akan memasukkan record baru ke dalam tabel "Persons". Kolom "ID" akan diberi nomor berikutnya dari urutan seq_person. Kolom "FirstName" akan disetel ke "Lars" dan kolom "LastName" akan disetel ke "Monsen".

piyushj.dll
sumber
1

Anda bisa mencoba yang berikut ini:

DECLARE @i INT
SET @i = @@ROWCOUNT + 1

INSERT INTO YourTable
        (Identity Column)    
VALUES    
        (@i + 1)
Tony Gallone
sumber