як збільшити значення цілих стовпців на 1 у SQL


92

Мої запитання такі

як збільшити значення стовпця на 1.

Наприклад, припустимо, що стовпець IDмає значення 1,2,3,4, ..

Тепер, коли я оновлюю цю таблицю, тоді IDстовпець повинен збільшуватися на 1,

Зараз IDстане 2,3,4,5, ..


будь-який зразок про вас? збільшити значення стовпця на 1 для 1 рядка? всі ряди? яка ваша таблиця (DDL)? зразки даних (DML)?
Кікенет,

Відповіді:


155

Щоб додати по одному до кожного значення в таблиці ...

UPDATE myTable
SET ID = ID + 1

Щоб створити нове значення, більше, ніж попереднє найвище (зазвичай), використовуйте стовпець з ІДЕНТИЧНІСТЮ


39
Зверніть увагу, що це не працює, коли стовпець NULL. NULL стовпці залишаються NULL, навіть після збільшення. Для вирішення цього питання використовуйте таке ISNULLтвердження : UPDATE myTable SET ID = ISNULL(ID, 0) + 1(Взято з цієї відповіді SO )
Уве Кейм,

SET [Lic] = [Lic] + @dif. Зверніть увагу, що змінна @dif може бути позитивною, 0 або негативною
Кікенет

43

Якщо ви хочете мати унікальний номер для кожного рядка, який автоматично генерується, це ІДЕНТИФІКАЦІЯ відповідно до відповіді Ніла.

Якщо кожного разу, коли ви оновлюєте таблицю, ви хочете збільшити значення (тобто вони не є ключами):

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


1

Ви можете використовувати, IDENTITYякий зробить це за вас.

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

Коли ви вставите свій перший запис, ви отримаєте Id1.


1

В Oracle код трохи складніший.

Вам доведеться створити поле автоматичного збільшення з об’єктом послідовності (цей об’єкт генерує послідовність чисел).

Використовуйте такий синтаксис CREATE SEQUENCE:

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

Наведений вище код створює об'єкт послідовності з назвою seq_person, який починається з 1 і збільшується на 1. Він також кешує до 10 значень для продуктивності. Параметр кеш-пам'яті визначає, скільки значень послідовності буде збережено в пам'яті для швидшого доступу.

Щоб вставити новий запис у таблицю "Persons", нам доведеться використовувати функцію nextval (ця функція отримує наступне значення з послідовності seq_person):

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

Вищезазначений оператор SQL вставить новий запис у таблицю "Особи". Стовпцю "ID" буде присвоєно наступний номер із послідовності seq_person. Для стовпця "Ім'я" буде встановлено значення "Ларс", а для стовпця "Прізвище" буде встановлено значення "Монсен".


1

Ви можете спробувати наступне:

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

INSERT INTO YourTable
        (Identity Column)    
VALUES    
        (@i + 1)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.