webForumDet fria alternativet

SELECT och INSERT "samtidigt"

Databaser & SQL

11 svar · 364 visningar · startad av Brimba

Medlem sedan dec. 19995 874 inlägg
Frågan#1

Hej!

Jag har en temporärtabell @tmp med låt oss säga 250 poster.

Jag vill hämta top 25 av de posterna, men jag vill hämta dessa slumpmässigt och därför har jag lagt till "order by newid()" i min select. Problemet är nu att jag vill lägga till dessa 25 posterna i en tabell också.

Hur gör jag? Måste jag mellanlagra de 25 posterna i en temporärtabell eller kan jag göra på något annat sätt?

Medlem sedan dec. 20003 887 inlägg
#2

SELECT INTO?

Medlem sedan juni 200032 967 inlägg
#3

SELECT INTO skapar en ny tabell, och det ville nog inte Brimba.
Jag hade kört INSERT INTO blah SELECT blah och sedan SELECT TOP 25 * FROM blah ORDER BY ID DESC. Ungefärligen.

Mvh

Medlem sedan dec. 20003 887 inlägg
#4

Jag tyckte jag läste att det skulle skapas, men jag vet inte hur jag läste ;)

Annars skulle jag nog svarat bra precis som du gjorde fast med [kod]-taggar. §jr

Medlem sedan dec. 19995 874 inlägg
#5

Problemet är att selectsatsen skall returnera många fler fält än det jag behöver inserta till.

Medlem sedan juni 200032 967 inlägg
#6

Jag förstår inte riktigt hur du menar. Kan du beskriva lite närmre?

Mvh

Medlem sedan dec. 19995 874 inlägg
#7
SELECT top 25 
  t1.field1, 
  t1.field2, 
  t1.field3, 
  t1.field4, 
  t1.field5, 
  t1.field6
FROM 
  tbl t1
ORDER BY newid()

INSERT INTO kektable (field1) VALUES(t1.field1)

Som du ser vill jag hämta fler fält än jag skall sätta in. Alltså går det inte att göra som @nders säger.

Medlem sedan juni 200032 967 inlägg
#8

Det borde väl gå? Ändra bara tabellnamnet i SELECT-delen i mitt exempel ovan?

Medlem sedan dec. 19995 874 inlägg
#9

Men jag vill att de valda posterna skall slumpas fram.

"order by newid()" är ett sätt att få slumpvalda poster.

Medlem sedan juni 200032 967 inlägg
#10

Ja, jag vet vad newid() är, men det föll bort ur hjärnan att du skulle ha det.

Varför vill du inte använda en till temporärtabell? Det känns som att det blir för mycket krångel att försöka undvika det även om det går.

Medlem sedan dec. 19995 874 inlägg
#11

Den främsta anledningen är att det prestandamässigt är dåligt att kopiera in allt i ännu en tabell, men det är väl vägen jag får gå antar jag :)

Tack ändå :D

Medlem sedan juni 200032 967 inlägg
#12

Jo, givetvis. Men det verkar ju vara relativt små mängder data det är tal om, så någon jätteförlust borde det inte bli?

Försumbart, känns det som. :)

Lycka till i fortsättningen. ;)

mvh

385 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
124 ms — deklarationer (db)
120 ms — hämta statistik (db)
138 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)