2012-04-13 18 views
11

में अज्ञात कॉलम में मेरे पास bank नामक एक तालिका है जिसमें तीन कॉलम हैं: uid, nick, balanceMySQL त्रुटि: 'जहां खंड'

मैं एक प्रश्न है कि निक के आधार पर संतुलन वापस आ जाएगी बनाने के लिए कोशिश कर रहा हूँ, और जब मैं इस क्वेरी का उपयोग मैं एक त्रुटि Unknown column 'Alex' in 'where clause' हो रही है:

SELECT b.balance FROM bank AS b WHERE b.nick=`Alex` LIMIT 1 

किसी को भी मैं गलत यहाँ क्या कर रहा हूँ देख सकते हैं ?

+0

क्या आपने "एलेक्स" के आसपास बैकटिक्स का उपयोग किया था या वे सिंगलक्वॉट हैं? – gmalette

उत्तर

26

बैकटिक (`), पहचानकर्ता के लिए उपयोग किया जाता है तालिका नाम, स्तंभ नाम, आदि एकल उद्धरण चिह्न की तरह (') कर रहे हैं स्ट्रिंग अक्षर के लिए प्रयोग किया जाता है।

SELECT b.balance FROM bank AS b WHERE b.nick='Alex' LIMIT 1 

, और अधिक स्पष्ट रूप से या::

आप क्या करना चाहते हैं

SELECT `b`.`balance` FROM `bank` AS b WHERE `b`.`nick`='Alex' LIMIT 1 

जब अस्पष्टता की कोई संभावना नहीं है, और तालिका/स्तंभ नाम विशेष वर्ण नहीं है जब या रिक्त स्थान, तो आप 'बंद छोड़ सकते हैं।

यहाँ कुछ प्रलेखन सूखी और पढ़ने के लिए कठिन है कि है: http://dev.mysql.com/doc/refman/5.0/en/identifiers.html

लेकिन यहाँ आसान है कि पढ़ने के लिए dba.stackoverflow पर एक संबंधित सवाल यह है: यहाँ https://dba.stackexchange.com/questions/23129/benefits-of-using-backtick-in-mysql-queries

और एक बहुत अच्छा पेज है कि मैं सभी को पढ़ने की सलाह देता हूं: http://www.sitepoint.com/forums/showthread.php?408497-the-big-bad-thread-of-quot-MySQL-Best-Practices-and-Other-Useful-Information-quot

5

आप एकल उद्धरण (') का उपयोग करने की जरूरत है, अपने क्षेत्रों के मूल्यों

SELECT b.balance FROM bank AS b WHERE b.nick='Alex' LIMIT 1 

टिक के निशान फ़ील्ड नाम निरूपित करने के लिए उपयोग किया जाता है के लिए अंकों टिकटिक नहीं।

6

तुम गलत "` "

उपयोग का उपयोग कर रहे 'के बजाय

SELECT b.balance FROM bank AS b WHERE b.nick='Alex' LIMIT 1 
-3

ऐसी त्रुटि के लिए एक और कारण है, अच्छी तरह से, दिए गए तालिका में ऐसा कोई कॉलम नहीं है। वर्तनी, पत्र केस, टाइपोग्राफ़िक गलतियों और तालिका परिभाषा में दिए गए फ़ील्ड की वास्तविक उपस्थिति की जांच करें।

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