Hej,
har en vanlig insert som ser ut typ så här:
INSERT INTO Tabell2
(Kolumn1, Kolumn2, SortId)
SELECT Kolumn1, Kolumn2, ??
FROM Tabell1
Låt oss säga att tabell 1 innehåller 3 poster.
Mao. 3 poster kopieras över till tabell 2.
Nu skulle jag vilja att SortId automatiskt lägger till 1 för varje post, går det på nått fiffigt sätt?
Resultatet blir då:
Kolumn1 Kolumn2 SortId
bla bla 1
bla bla 2
bla bla 3
Databas: sqlserver 2005
@ndersMedlem sedan juni 200032 969 inlägg Vill du att sortID ska bli ett högre än det är i tabell1, eller vill du att en "räknare" börjar på 1 och ökar med varje inlagd post?
En räknare skulle man kunna kalla det, dock inte unik då samma siffra kan finnas sen tidigare.
Man skulle väl kunna kalla det "sessionunikt", typ om man kan få en räknare i just detta "scope".
SortId ska alltid börja på 1 och öka 1 för varje post.
@ndersMedlem sedan juni 200032 969 inlägg I brist på bättre idéer:
Skapa en temptabell med en räknare. Gör inserts i temptabellen. Flytta posterna från temptabellen till tabell2.
mvh
Mm, var inne på den idén också, men det känns så himla sql 2000 -tal! ;)
Det måste ju bara finnas nått fiffigare sätt i 2005:an eller?
CREATE TABLE #tmp (Id int identity(1,1), ColId int not null)
INSERT INTO #tmp (ColId)
SELECT ColId
FROM Tabell1
WHERE bla = bla
INSERT INTO Tabell2
(Kolumn1, SortId)
SELECT Kolumn1, t.Id
FROM Tabell1 a
INNER JOIN #tmp t ON a.ColId = t.ColId
WHERE a.bla = bla