2012-10-30 32 views
5

Tôi muốn lưu trữ kết quả của một số liệu thống kê SELECT thành nhiều biến.CHỌN INTO nhiều biến số MySQL

Tôi biết rằng kết quả của truy vấn này sẽ luôn trả lại 6 ints từ 6 hàng khác nhau.

Tôi đã thử bằng cách sử dụng đoạn mã sau:

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

album là một bảng. uploaded là một trường trong album. scene_id là một trường trong album. idPRIMARY_KEY của album.

Tôi đã đọc rằng số lượng biến phải bằng số lượng trường. Đó rõ ràng không phải là trường hợp trong tuyên bố trên.

Với ý nghĩ này, làm cách nào để khắc phục sự cố này?

Mã này đang được sử dụng trong Trình kích hoạt MySQL.

EDIT: schema Bảng có liên quan theo yêu cầu:

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

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

kích hoạt là bắn về việc thay đổi approved 0-1

+0

Bạn sẽ phải đăng ngôn ngữ nào bạn đang sử dụng để thúc đẩy cơ sở dữ liệu này. Nếu tôi rõ ràng về những gì bạn muốn, bạn không thể làm điều đó trong một lựa chọn duy nhất. – climbage

+0

Tôi đang xây dựng nó thành Trình kích hoạt MySQL. Cảm ơn –

+0

Tôi hỏi tại sao bạn muốn dữ liệu trong các biến? Nếu bạn cần làm bất cứ điều gì với dữ liệu được chèn/xóa sau này, tại sao không chọn trực tiếp từ các bảng 'OLD' /' MỚI'? – Bridge

Trả lời

8

Bạn có thể tham gia với cùng một bảng và đảm bảo rằng mỗi tham gia sẽ cung cấp một id mới, một cái gì đó tương tự (ví dụ cho hai ids, nhưng bạn sẽ nhận được điểm.):

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; 

Xem SqlFiddle cho một sql đầy đủ và test.

+0

Cảm ơn bạn. Nhưng tôi đã nhận được lỗi # 1415 - Không được phép trả lại tập hợp kết quả từ trình kích hoạt. 'select @ photo1, @ photo2, @ photo3, @ photo4, @ photo5, @ photo6;' đang gây ra lỗi. Bất kỳ ý tưởng? –

+0

@ Ríomhaire đó là một cái gì đó khác, bạn cần phải cung cấp cơ thể mã kích hoạt của bạn. – dan

+0

Tôi cũng nhận được lỗi này; # 1235 - Phiên bản MySQL này chưa hỗ trợ 'nhiều trình kích hoạt với cùng thời gian và sự kiện hành động cho một bảng'. –

Các vấn đề liên quan