2012-10-30 98 views
5

我想存儲SELECT statment到多個變量的結果。SELECT INTO多@variables MySQL的

我知道,這個查詢的結果總是從6點不同的行返回6 ints

我曾嘗試使用下面的代碼嘗試:

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

album是一個表。 uploadedalbum中的字段。 scene_idalbum中的字段。 idalbumPRIMARY_KEY

我已閱讀,變量的數量必須等於字段的數目。上述說法顯然並非如此。

考慮到這一點,我將如何解決這個問題?

此代碼被一個MySQL觸發器內使用。

編輯:相關表格的架構爲每個請求:

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

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

觸發器是在從0 approved變化被炒到1

+0

你必須發佈你正在使用哪種語言來驅動這個數據庫。如果我清楚你想要什麼,你不能在一個選擇中做到這一點。 – climbage

+0

我正在建立這個MySQL觸發器。謝謝 –

+0

我敢問你爲什麼想要變量中的數據?如果您需要對稍後插入/刪除的數據執行任何操作,那麼爲什麼不直接從'OLD' /'NEW'表中選擇呢? – Bridge

回答

8

您可以用相同的表連接,並保證每個加盟將提供新的ID,類似的信息(例如,用於兩個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

+0

謝謝。但是我得到錯誤#1415 - 不允許從觸發器返回結果集。 'select @ photo1,@ photo2,@ photo3,@ photo4,@ photo5,@ photo6;'導致錯誤。有任何想法嗎? –

+0

@Ríomhaire那是別的,你需要提供你的觸發器代碼體。 – dan

+0

我也遇到這個錯誤; #1235 - 此版本的MySQL尚不支持'具有相同動作時間和一個表的事件的多個觸發器'。 –