webForumDet fria alternativet

Lägga till 1 på varje insert

4 svar · 238 visningar · startad av doggelito

doggelitoMedlem sedan juni 20003 076 inlägg
#1

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
#2

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?

doggelitoMedlem sedan juni 20003 076 inlägg
#3

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
#4

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

doggelitoMedlem sedan juni 20003 076 inlägg
#5

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
256 ms totalt · 3 externa anrop · v20260731065814-full.86db40fa
128 ms — hämta forumlista (db)
126 ms — hämta statistik (db)
127 ms — hämta tråd, inlägg och bilagor (db)