webForumDet fria alternativet

SELECT och INSERT "samtidigt"

11 svar · 364 visningar · startad av Brimba

BrimbaMedlem sedan dec. 19995 875 inlägg
#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?

Engine^Medlem sedan dec. 20003 887 inlägg
#2

SELECT INTO?

@ndersMedlem sedan juni 200032 969 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

Engine^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

BrimbaMedlem sedan dec. 19995 875 inlägg
#5

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

@ndersMedlem sedan juni 200032 969 inlägg
#6

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

Mvh

BrimbaMedlem sedan dec. 19995 875 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.

@ndersMedlem sedan juni 200032 969 inlägg
#8

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

BrimbaMedlem sedan dec. 19995 875 inlägg
#9

Men jag vill att de valda posterna skall slumpas fram.

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

@ndersMedlem sedan juni 200032 969 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.

BrimbaMedlem sedan dec. 19995 875 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

@ndersMedlem sedan juni 200032 969 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

132 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
130 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)