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, ..


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


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>

8

Coba ini:

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

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.


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".


1

Anda bisa mencoba yang berikut ini:

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

INSERT INTO YourTable
        (Identity Column)    
VALUES    
        (@i + 1)
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.