2012-10-30 3 views
5

SELECT 구문의 결과를 여러 변수에 저장하고자합니다.SELECT INTO multiple @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의 필드입니다. idPRIMARY_KEYalbum입니다.

나는 변수의 수가 필드의 수와 같아야한다는 것을 읽었다. 위의 진술에서 분명히 드러난 것은 아닙니다.

이것을 염두에두고이 문제를 어떻게 극복 할 수 있습니까?

이 코드는 MySQL 트리거 내에서 사용됩니다.

편집 : 요청에 따라 관련 테이블 스키마 :

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

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

트리거 당신은 같은 테이블에 가입하고 각각을 제공 할 것입니다 참여하도록 할 수 있습니다 1

+0

이 데이터베이스를 사용하기 위해 사용하는 언어를 게시해야합니다. 당신이 원하는 것에 대해 분명하다면, 당신은 한번의 선택으로 그것을 할 수 없습니다. – climbage

+0

나는 이것을 MySQL 트리거에 내장하고있다. 감사합니다 –

+0

감히 내가 왜 변수의 데이터를 원합니까? 나중에 삽입/삭제 된 데이터로 무엇인가를해야한다면 왜 'OLD' /'NEW' 테이블에서 직접 선택하지 않을까요? – Bridge

답변

8

0에서 approved의 변화에 ​​해고 새로운 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 - 트리거에서 결과 집합을 반환 할 수 없습니다. '선택 @ photo1, @ photo2, @ photo3, @ photo4, @ photo5, @ photo6;은 오류의 원인입니다. 어떤 아이디어? –

+0

@ Ríomhaire 그 밖의 것이면 트리거 코드 본문을 제공해야합니다. – dan

+0

이 오류도 발생합니다. # 1235 -이 버전의 MySQL은 '하나의 테이블에 대해 동일한 동작 시간과 이벤트를 가진 다중 트리거'를 아직 지원하지 않습니다. –