Вставка SQL с подзапросом - PullRequest
       1

Вставка SQL с подзапросом

0 голосов
/ 06 октября 2011

У меня есть оператор SQL, который представляет собой обычную вставку двух значений в таблицу (значения означают поля).Это ints / nvarchars.

Однако для 3-го поля таблицы (которое может быть нулевым) я хочу вставить максимальное число строк в таблицу + 1. Как я могу это сделать?

РЕДАКТИРОВАТЬ:

Таблица как таковая

Postcode  Active ID
NULL       1      14

Ответы [ 2 ]

1 голос
/ 06 октября 2011

Этот код показывает вам, как это можно сделать и с какими проблемами вы можете столкнуться, если вам нужно, чтобы ID был уникальным значением в таблице.Есть еще ситуации, когда вы можете получить дубликаты.Можно предположить, что два пользователя добавляют строки в таблицу одновременно.

declare @T table(Postcode varchar(5), Active bit, ID bigint)

insert into @T (Postcode, Active, ID)
select '1111', 1, count(*)+1
from @T

insert into @T (Postcode, Active, ID)
select '2222', 0, count(*)+1
from @T

delete from @T where Postcode = '1111'

insert into @T (Postcode, Active, ID)
select '3333', 0, count(*)+1
from @T

select *
from @T

Результат:

Postcode Active ID
-------- ------ --------------------
3333     0      2
2222     0      2

Если вам нужны уникальные значения, вы должны использовать идентификатор столбец вместо.Возможно, даже сделайте его первичным ключом или хотя бы добавьте уникальное ограничение на столбец идентификатора.

0 голосов
/ 06 октября 2011

Я предполагаю, что вы работаете с SQL Server, поскольку вы не указали иначе.

INSERT INTO Table_1 (col1, col2, col3)
        VALUES  (15, 'info', 1 + (SELECT COUNT(*) FROM Table_1))

Вы должны знать, что это увеличит расходы на операцию вставки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...