6

SELECTステートメントの結果を複数の変数に格納したいと考えています。

このクエリの結果は常に6 ints6 つの異なる行から返されることがわかっています。

次のコードを使用してみました:

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

albumはテーブルです。 uploadedのフィールドですalbumscene_idのフィールドですalbumidPRIMARY_KEYですalbum

変数の数はフィールドの数と等しくなければならないことを読みました。これは明らかに上記のステートメントには当てはまりません。

これを念頭に置いて、どうすればこの問題を克服できますか?

このコードは MySQL トリガー内で使用されています。

EDIT:リクエストごとに関連するテーブルスキーマ:

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

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

approvedトリガーは、0 から 1 への変化で起動されます

4

1 に答える 1

9

同じテーブルに結合し、各結合が次のような新しい ID を提供するようにすることができます (たとえば、2 つの ID の場合ですが、要点はわかります)。

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;

完全な sql とテスト ケースについては、SqlFiddleを参照してください。

于 2012-10-30T16:55:49.990 に答える