2012-01-10 9 views
35

मैं एक मामले में जहां तालिका नाम हो रही है की तरह एक सेट चर से होना चाहिए:कैसे MySQL से चयन करने के लिए जहां टेबल नाम चर है

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 

लेकिन उस तरह से MySQL एक त्रुटि आउटपुट कर रही है, तो कर सकते थे किसी शो मैं इसे कैसे प्राप्त कर सकता हूं, क्योंकि ये मेरे बच्चे के कदम MySQL में हैं।

उत्तर

59

आपको इसे prepared statement के साथ करना होगा। कुछ ऐसा:

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

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

एक और चीज केवल तभी दिखती है जब मैं DEALLOCATE PREPARE stm1 को हटा देता हूं; – Burimi

+0

शानदार समाधान। मुझे जो समस्या है, उसे हल करने में मेरी मदद की, धन्यवाद। –

+0

'डीलॉकेट तैयार करें' क्या करता है? –

संबंधित मुद्दे