2012-10-30 20 views
5

Ich möchte das Ergebnis einer SELECT Anweisung in mehrere Variablen speichern.SELECT INTO mehrere @variables MySQL

Ich weiß, dass das Ergebnis dieser Abfrage immer 6 ints aus 6 verschiedenen Zeilen zurückgeben wird.

Ich habe versucht, den folgenden Code:

SELECT id INTO @photo1, @photo2, @photo3, @photo4, @photo5, @photo6 
FROM album WHERE uploaded = @time AND scene_id = NEW.id; 

album ist ein Tisch. uploaded ist ein Feld in album. scene_id ist ein Feld in album. id ist die PRIMARY_KEY von album.

Ich habe gelesen, dass die Anzahl der Variablen gleich der Anzahl der Felder sein muss. Dies ist offensichtlich in der obigen Aussage nicht der Fall.

In diesem Sinne, wie würde ich dieses Problem überwinden?

Dieser Code wird in einem MySQL-Trigger verwendet.

EDIT: Relevante Tabellenschema als pro Anfrage:

person -- name of table 
id | approved -- id is PK 

album -- name of table 
id | uploaded | scene_id -- id is PK 

-Trigger auf Änderung von approved von 0 bis 1

+0

Sie müssen posten, welche Sprache Sie verwenden, um diese Datenbank zu fahren. Wenn mir klar ist, was Sie wollen, können Sie es nicht in einer einzigen Auswahl tun. – climbage

+0

Ich baue das in einen MySQL-Trigger. Danke –

+0

Darf ich fragen, warum Sie die Daten in Variablen möchten? Wenn Sie etwas mit den Daten tun müssen, die später eingefügt/gelöscht wurden, wählen Sie dann direkt aus den Tabellen "OLD"/"NEW" aus. – Bridge

Antwort

8

gefeuert Sie mit dem gleichen Tisch sitzen können und sicherzustellen, dass jeder liefert beitreten eine new id, so etwas wie (zB für zwei Ids, aber Sie werden den Punkt.):

SELECT a1.id, a2.id INTO @photo1, @photo2 
FROM album a1 
inner join album a2 on a2.scene=a1.scene and a2.upload=a1.upload and a2.id>a1.id 
WHERE a1.uploaded = @time AND a1.scene_id = NEW.id; 

Siehe SqlFiddle für eine vollständige sQL-und Testfall.

+0

Vielen Dank. Aber ich habe den Fehler # 1415 - Nicht erlaubt, eine Ergebnismenge von einem Auslöser zurückzugeben. 'Wählen Sie @ Foto1, @ Foto2, @ Foto3, @ Foto4, @ Foto5, @ Foto6;' verursacht den Fehler. Irgendwelche Ideen? –

+0

@ Ríomhaire, das ist etwas anderes, müssen Sie Ihren Triggercode Körper bereitstellen. – dan

+0

Ich bekomme auch diesen Fehler; # 1235 - Diese Version von MySQL unterstützt noch nicht 'mehrere Trigger mit der gleichen Aktion Zeit und Ereignis für eine Tabelle'. –

Verwandte Themen