2016-02-17 17 views
-1

Таблица ш:SQL Insert Query Для Multiple Max идентификаторы

|ID|Comment|SeqID| 
|1 |bajg | 1 | 
|1 |2423 | 2 | 
|2 |ref | 1 | 
|2 |comment| 2 | 
|2 |juk | 3 | 
|3 |efef | 1 | 
|4 | hy | 1 | 
|4 | 6u | 2 | 

Как вставить стандартный новый комментарий для каждого идентификатора для нового SeqID (увеличение SeqID на 1)

В Ниже результаты запроса в самая высокая SeqID:

Select * 
From w 
Where SEQID = 
(select max(seqid) 
from w) 

Таблица ш:

|2 |juk | 3 | 

Ожидаемый результат Таблица ш:

|ID|Comment|SeqID| 
|1 |sqc | 3 | 
|2 |sqc | 4 | 
|3 |sqc | 2 | 
|4 |sqc | 3 | 

Должен ли я пройти и вставить все значения (новый комментарий как ГКК) Я хочу, чтобы в таблицу, используя ниже, или есть более быстрый способ?

INSERT INTO table_name 
VALUES (value1,value2,value3,...); 
+0

Откуда возникает sqc? Я немного не понимаю, что вы пытаетесь сделать на самом деле? Обновление существующей записи или создание новой записи? –

+0

sqc - новый комментарий, который я хочу добавить. В таблице указаны все комментарии, и каждый добавленный комментарий добавляется последовательно. Например: если я добавлю новый комментарий «hihi» для ID 1 (глядя на данные в таблице w), он добавит новую строку в базу данных | 1 | hihi | 3 | , Итак, создаем новую запись –

ответ

1

Попробуйте это:

INSERT INTO mytable (ID, Comment, SeqID) 
SELECT ID, 'sqc', MAX(SeqID) + 1 
FROM mytable 
GROUP BY ID 

Demo here

0

Вы, вероятно, лучше всего вычисления значения при запросе. Определить identity столбец на столе, скажем, CommentId и выполнить запрос, например:

select id, comment, 
     row_number() over (partition by comment order by CommentId) as SeqId 
from t; 

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