6

我希望将SELECT语句的结果存储到多个变量中。

我知道这个查询的结果总是会6 ints从 6 个不同的行返回。

我尝试使用以下代码:

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

album是一张桌子。 uploaded是 中的一个字段albumscene_id是 中的一个字段albumidPRIMARY_KEYalbum

我读过变量的数量必须等于字段的数量。这显然不是上述陈述中的情况。

考虑到这一点,我将如何克服这个问题?

此代码正在 MySQL 触发器中使用。

编辑:根据请求的相关表架构:

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,比如(例如,对于两个 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 回答