2012-10-30 24 views
5

Bir SELECT statüsünün sonucunu çoklu değişkenlere kaydetmek istiyorum.SELECT INTO çoklu @variables MySQL

Bu sorgu sonucunun her zaman 6 farklı satırdan 6 ints değerini döndüreceğini biliyorum. Aşağıdaki kodu kullanarak denedi

:

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

album bir tablodur. uploadedalbum alanındaki bir alandır. scene_idalbum alanındaki bir alandır. id, 'un album'dur.

Değişkenlerin sayısının alanların sayısına eşit olması gerektiğini okudum. Yukarıdaki ifadede durum böyle değildir.

Bunu akılda tutarak, bu sorunu nasıl aşabilirim?

Bu kod bir MySQL Trigger içinde kullanılıyor.

DÜZENLEME: İsteğe göre İlgili Tablo şema:

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

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

Tetik Aynı tabloyla katılmak ve her bir sağlayacaktır katılmak sağlayabilirsiniz 1

+0

Bu veritabanını kullanmak için kullanmakta olduğunuz dili göndermeniz gerekecek. Ne istediğinizi açık seçersem, tek bir seçim yapamazsın. – climbage

+0

Bunu bir MySQL Tetikleyicisine yapıyorum. Teşekkürler –

+0

Dare Neden değişkenlerde veriyi istediğini soruyorsun? Daha sonra eklenmiş/silinmiş verilerle bir şeyler yapmanız gerekiyorsa, neden doğrudan 'OLD'/'NEW' tablolarından seçilmiyor? – Bridge

cevap

8

0'dan approved değişikliği üzerinde ateşlenir yeni kimliği, gibi bir şey (örneğin iki kimlikleri için, ama noktası olacaktır.):

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; 

tam sql ve test durumu için SqlFiddle bakınız.

+0

Teşekkürler. Ama hata # 1415 aldım - Bir tetikleyiciden bir sonuç kümesine dönmek için izin verilmiyor. @ @ photo1, @ photo2, @ photo3, @ photo4, @ photo5, @ photo6; 'hataya neden oluyor. Herhangi bir fikir? –

+0

@ Ríomhaire başka bir şey, tetik kodu gövdesini sağlamanız gerekir. – dan

+0

Ayrıca bu hatayı alıyorum; # 1235 - MySQL'in bu sürümü henüz 'bir eylem için aynı eylem zamanı ve olaya sahip birden fazla tetikleyici' desteklemiyor. –