webForumDet fria alternativet

INSERT INTO med både SELECT o VALUES

Databaser & SQL

4 svar · 576 visningar · startad av fredrik_kratz

Medlem sedan apr. 20081 inlägg
Frågan#1

Vill dels läsa in data till en tabell från en annan men även läsa in värden (som man vanligtvis görs via VALUES).

Följande fungerar då jag enbart läser in ID från tabellen MoteBasdata till kolumnen MotesID i tabellen OvningsDataMM:

INSERT INTO OvningsDataMM ( MotesID )
SELECT MoteBasdata.ID
FROM MoteBasdata
WHERE MoteBasdata.Malgrupp='pepsi';

Men om jag sedan vill lägga in mer i OvningsDataMM (som tex Person) så blir det fel. Jag tyckte att det borde vara i form av:

INSERT INTO OvningsDataMM ( MotesID, Person )
(SELECT MoteBasdata.ID
FROM MoteBasdata
WHERE MoteBasdata.Malgrupp='pepsi'),'Erik';

Men så funkar det tydligen inte!

Hur ska jag göra för att få till denna SQL-str ...

Medlem sedan juli 20011 129 inlägg
#2
INSERT INTO OvningsDataMM ( MotesID, Person  )
(SELECT MoteBasdata.ID, 'Erik'
FROM MoteBasdata
WHERE MoteBasdata.Malgrupp='pepsi')

bör fungera. Dock kommer alla heta erik då.

Medlem sedan jan. 2005953 inlägg
#3

Testa med

INSERT INTO OvningsDataMM ( MotesID, Person ) VALUES ((SELECT MoteBasdata.ID FROM MoteBasdata WHERE MoteBasdata.Malgrupp='pepsi'), 'Erik')
Medlem sedan juli 20011 129 inlägg
#4

metalboy skrev:

Testa med

INSERT INTO OvningsDataMM ( MotesID, Person ) VALUES ((SELECT MoteBasdata.ID FROM MoteBasdata WHERE MoteBasdata.Malgrupp='pepsi'), 'Erik')

Resulterar inte det i en sats som ser ut ungefär såhär i klartext:

INSERT INTO OvningsDataMM ( MotesID, Person ) VALUES (1,2,3,7,6,5,8, 'Erik')

Eller tänker jag fel?

Medlem sedan dec. 200012 464 inlägg
#5

Nja, om man har en subselect i values på det sättet så skall det bli fel om selecten retrurnerar mer än en post.

249 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)