webForumDet fria alternativet
Logga in / Bli medlem

select ->loop ->insert

Databaser & SQL

4 svar · 293 visningar · startad av doggelito

Medlem sedan juni 20003 076 inlägg
Trådstart#1

på en aspsida är det ju lätt att loopa igenom ett recordset och sedan köra en insert för varje rad, men kan man göra detta direkt i query analyzern med t.ex. while-komandot? (använder sql-2000)
jag behöver föra över följande kolumner: Userid och Email från en tabell till en annan och vill inte handjaga alla poster och tycker det känns onödigt att göra en aspsida bara för detta, så fråga: går det?

select Userid, Email 
from tblWebUsers 
where Ftp = 0
order by Urlid

while ???
Insert Into tblWebUsersEmail (Userid, Email) Values (??, ??)
end
Medlem sedan juni 200032 967 inlägg
#2

Varför krångla?

Detta borde räcka alldeles utmärkt:

INSERT INTO tblWebUsersEmail (Userid, Email) SELECT Userid, Email from tblWebUsers where Ftp = 0

Mvh

Medlem sedan juni 20003 076 inlägg
#3

Tja, varför krångla! :) :bire

Medlem sedan juni 20003 076 inlägg
#4

Det kanske kan vara kul att se vad jag var inne på, så här en fredag eftermiddag.
Dock så känns det som om jag var ganska nära! Fast ändå så helt fel ute! :)

declare @rows int
declare @loop int
declare @Userid int
declare @Email varchar(50)

select @rows = @@rowcount from tblWebUsers where Ftp = 0
select @loop = 1
while @loop <= @rows
	select @Userid = Userid, @Email = Email from tblWebUsers where @@rowcount = @loop
	insert into tblWebUsersEmail (Userid, Email) values (@Userid, @Email)
	select @loop = @loop+1
Medlem sedan juni 200032 967 inlägg
#5

Det hade säkert gått att få ihop det där också. Jag måste dock fortfarande tillstå att mitt exempel ovan är aningen mindre krångligt. ;)

Mvh

250 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)