2012-03-28 29 views
5

जब मैं एक नियमित मैं निम्नलिखित त्रुटि मिलती है चलाने का प्रयास:MySQL त्रुटि कोड 1166. गलत स्तंभ नाम

Error Code: 1166. Incorrect column name 'School.`School Name` = case when School.`Web School Name` is null then School.`School Name` els'

मैं डबल स्तंभ नाम जाँच की है और वहाँ तथ्य यह है एक School.School Name में है। कोई अग्रणी या पिछली जगह नहीं है।

CREATE temporary TABLE tt_Step1 
SELECT DISTINCT State.Code, State.Name, 
School.`School Name` = case 
    when School.`Web School Name` is null then School.`School Name` 
    else School.`Web School Name` 
    end, 
School.`School ID` 
-- Into tt_Step1 
FROM State LEFT JOIN School ON State.Code = School.State 
Where (School.`School ID` <> ... 

मैं हाल ही में MySQL के लिए MSSQL से इस कोड को परिवर्तित तो वहाँ कुछ मैं याद किया हो सकता है, लेकिन मैं किसी भी त्रुटि नहीं मिल सकता है: यहाँ दिनचर्या की शुरुआत उस त्रुटि की चर्चा करते हुए किया जाता है। मूल MSSQL क्वेरी SQL सर्वर प्रबंधन स्टूडियो में ठीक चलती है लेकिन MySQL में इसका परिवर्तित संस्करण नहीं है।

CREATE temporary TABLE tt_Step1 
SELECT DISTINCT State.Code, State.Name, 
coalesce(School.`Web School Name`, School.`School Name`), 
School.`School ID` 
-- Into tt_Step1 
FROM State LEFT JOIN School ON State.Code = School.State 
Where (School.`School ID` <> ... 
+0

अंतरिक्ष के साथ कॉलम नाम MySQL में नहीं हो सकता है: http://dev.mysql.com/doc/refman/5.0/en/identifiers.html –

+3

@ डेविडबेलगर: यह बिल्कुल सही नहीं है। दस्तावेज़ से जुड़ी एकमात्र चीज कहती है कि 'अंतरिक्ष वर्णों के साथ ** ** ** समाप्त नहीं हो सकता है'। – mellamokb

+1

इसे वोट क्यों दें? यह एक बिल्कुल ठीक एसओ सवाल है। –

उत्तर

3

इस एक शॉट दे।

  1. आप School.School Name जैसे बहु-भाग वाले नाम वाले कॉलम को उपनाम नहीं कर सकते हैं।
  2. माईएसक्ल में एलिसिंग blah as ColumnName के साथ किया गया है, ColumnName = blah नहीं।
+0

मैंने "कोलेसेस (स्कूल। 'वेब स्कूल नाम', स्कूल। 'स्कूल नाम') का उपयोग 'स्कूल नाम' के रूप में किया था। यह ज्यादातर काम करता है लेकिन कभी-कभी स्कूल नाम कुछ प्रविष्टियों के लिए 0 या 1 के रूप में लौट रहा है। –

+0

सभी coalesce शून्य के लिए पहला तर्क जांचता है, अगर यह शून्य है, तो इसके बजाय दूसरे तर्क का उपयोग करें। यदि आप कोलेसे से "0" और "1" वापस प्राप्त कर रहे हैं, तो ऐसा इसलिए है क्योंकि उन कॉलम में "0" और "1" के साथ आपकी स्कूल तालिका में डेटा है। – robertvoliva

+0

हाँ, मुझे यकीन नहीं है कि क्या हो रहा है। मैंने तालिका को मैन्युअल रूप से और एक क्वेरी के साथ चेक किया और 0 या 1 के किसी भी मान नहीं मिला। वैसे भी, मैंने पुराने केस स्टेटमेंट का उपयोग किया और इसे सही ढंग से अलिया किया और दोनों परिणाम एक ही चीज़ लौटे, इसलिए मैं इस जवाब को स्वीकार करूंगा। मुझे स्पष्ट रूप से अन्य समस्याएं आ रही हैं। सहायता के लिए बहुत बहुत धन्यवाद। –

0

मेरे मामले में, यह स्तंभ नाम के बाद एक अदृश्य अतिरिक्त स्थान के कारण हुआ था। मैंने promotion-id के बजाय promotion-ids लिखा था।

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