SQL'de tamsayı Sütun değerini 1 artırma


92

Sorularım

bir sütunun değeri 1 nasıl artırılır.

Örneğin, bir sütunun ID1,2,3,4, .. değerlerine sahip olduğunu varsayalım .

Şimdi bu tabloyu güncellediğimde IDsütun 1 artmalı,

Şimdi ID2,3,4,5 olacak ..


istediğiniz hakkında herhangi bir örnek? 1 satır için sütunun değerini 1 artır? tüm satırlar? masanız hangisi (DDL)? veri örnekleri (DML)?
Kiquenet

Yanıtlar:


155

Tablodaki her değere bir tane eklemek için ...

UPDATE myTable
SET ID = ID + 1

Yeni bir değer oluşturmak için, bir öncekinden daha yüksek (genellikle), IDENTITY ile bir sütun kullanın


39
Lütfen sütun NULL olduğunda bunun çalışmadığını unutmayın . NULL sütunlar, artırıldıktan sonra bile NULL kalır. Bunu çözmek için şu ISNULLifadeyi kullanın : UPDATE myTable SET ID = ISNULL(ID, 0) + 1( Bu SO cevabından alınmıştır )
Uwe Keim

SET [Lic] = [Lic] + @dif. @Dif değişkeninin pozitif, 0 veya negatif
Kiquenet

43

Otomatik olarak oluşturulan her satır için benzersiz bir numaraya sahip olmak istiyorsanız, bu Neil'in cevabına göre KİMLİK'dir.

Tabloyu her güncellediğinizde değerleri artırmak istiyorsanız (yani bunlar anahtar değil):

Update MyTable
Set IDColumn = IDColumn + 1
Where <whatever>

8

Bunu dene:

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

1

Bunu IDENTITYsizin için yapacak olanı kullanabilirsiniz .

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

İlk kaydınızı eklediğinizde Id, 1'den bir tane alacaksınız .


1

Oracle'da kod biraz daha karmaşıktır.

Sıra nesnesiyle bir otomatik artış alanı oluşturmanız gerekecektir (bu nesne bir sayı dizisi oluşturur).

Aşağıdaki CREATE SEQUENCE sözdizimini kullanın:

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

Yukarıdaki kod seq_person adında 1 ile başlayan ve 1 artacak bir sıra nesnesi yaratır. Ayrıca performans için 10'a kadar değeri önbelleğe alır. Önbellek seçeneği, daha hızlı erişim için bellekte kaç sıra değerinin saklanacağını belirtir.

"Kişiler" tablosuna yeni bir kayıt eklemek için, nextval işlevini kullanmamız gerekir (bu işlev, seq_person dizisinden sonraki değeri alır):

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

Yukarıdaki SQL ifadesi "Kişiler" tablosuna yeni bir kayıt ekler. "ID" sütununa, seq_person dizisinden sonraki numara atanacaktır. "Ad" sütunu "Lars" ve "Soyadı" sütunu "Monsen" olarak ayarlanacaktır.


1

Aşağıdakileri deneyebilirsiniz:

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

INSERT INTO YourTable
        (Identity Column)    
VALUES    
        (@i + 1)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.