2012-01-10 17 views
35

Tôi có một trường hợp nhận được tên bảng nên từ một biến bộ như:Làm thế nào để chọn từ MySQL nơi tên bảng là Variable

SET @ID_1 = (SELECT ID FROM `slider` LIMIT 0,1); 
SET @Cat = (SELECT Category FROM `slider` LIMIT 0,1); 
select * from @Cat where ID = @ID_1 

nhưng làm như vậy MySQL kết quả đầu ra một lỗi, vì vậy có thể một người nào đó trình diễn tôi làm thế nào tôi có thể đạt được điều đó, bởi vì đây là những bước chân của tôi trong MySQL.

Trả lời

59

Bạn sẽ phải thực hiện việc này với số prepared statement. Một cái gì đó như:

SET @s = CONCAT('select * from ', @Cat, ' where ID = ', @ID_1); 

PREPARE stmt1 FROM @s; 
EXECUTE stmt1; 
DEALLOCATE PREPARE stmt1; 
+0

Một điều nữa nó chỉ hiển thị khi tôi xóa DEALLOCATE PREPARE stm1; – Burimi

+0

Giải pháp sáng chói. Giúp tôi giải quyết vấn đề tôi đang gặp phải, cảm ơn. –

+0

'TIẾP XÚC TIẾP XÚC 'sẽ làm gì? –

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