MariaDB
 sql >> डेटाबेस >  >> RDS >> MariaDB

मारियाडीबी में "त्रुटि 1054 (42S22):अज्ञात कॉलम '...' को 'ऑन क्लॉज" में ठीक करें

अगर आपको कोई त्रुटि मिल रही है जिसमें "ERROR 1054 (42S22):'ऑन क्लॉज' में अज्ञात कॉलम 'tab.ColName'' लिखा हुआ है। मारियाडीबी में, यहां तीन संभावित कारण हैं:

  • कॉलम मौजूद नहीं है।
  • आप एक उपनाम वाले कॉलम को उसके कॉलम नाम से संदर्भित करने का प्रयास कर रहे हैं।
  • या यह दूसरी तरह से हो सकता है। आप कॉलम को किसी ऐसे उपनाम से संदर्भित कर सकते हैं जिसे कभी घोषित नहीं किया गया था।

यदि किसी कॉलम में एक उपनाम है, तो आपको उस उपनाम का उपयोग किसी भी ON . में संदर्भित करते समय करना चाहिए क्लॉज जब दो या दो से अधिक टेबल के खिलाफ जॉइन करते हैं। इसके विपरीत, यदि आप किसी स्तंभ को किसी उपनाम से संदर्भित करते हैं, तो आपको यह सुनिश्चित करने की आवश्यकता है कि उपनाम वास्तव में पहले स्थान पर घोषित किया गया है।

उदाहरण 1

यहां कोड का एक उदाहरण दिया गया है जो त्रुटि उत्पन्न करता है:

SELECT 
    c.CatId,
    c.CatName
FROM Cats c
INNER JOIN Dogs d
ON c.DogName = d.DogName;

परिणाम:

ERROR 1054 (42S22): Unknown column 'c.DogName' in 'on clause'

यहाँ मैंने गलती से c.DogName . का प्रयोग किया है ON . में क्लॉज जब मैं c.CatName . का उपयोग करना चाहता था ।

इस मामले में, फिक्स सरल है। सही कॉलम नाम का प्रयोग करें:

SELECT 
    c.CatId,
    c.CatName
FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;

उदाहरण 2

यहां कोड का एक और उदाहरण दिया गया है जो त्रुटि उत्पन्न करता है:

SELECT 
    CatId,
    CatName
FROM Cats
INNER JOIN Dogs d
ON c.CatName = d.DogName;

परिणाम:

ERROR 1054 (42S22): Unknown column 'c.CatName' in 'on clause'

यहां मैंने ON . में एक गैर-मौजूद उपनाम का संदर्भ दिया है खंड। मैंने c.CatName . का इस्तेमाल किया CatName . को संदर्भित करने के लिए Cats . में कॉलम टेबल। एकमात्र समस्या यह है कि Cats तालिका का कोई उपनाम नहीं है।

इस समस्या को ठीक करने के लिए, हमें केवल Cats . के लिए एक उपनाम प्रदान करना है तालिका:

SELECT 
    CatId,
    CatName
FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;

वैकल्पिक रूप से, हम उपनाम के सभी संदर्भ हटा सकते हैं, और केवल पूर्ण तालिका नाम का उपयोग कर सकते हैं:

SELECT 
    CatId,
    CatName
FROM Cats
INNER JOIN Dogs
ON Cats.CatName = Dogs.DogName;

एक बात जो मुझे बतानी चाहिए वह यह है कि, इस उदाहरण में हमने SELECT में कॉलम नामों को प्रीफ़िक्स नहीं किया है उपनाम के साथ सूची। अगर हमने ऐसा किया होता, तो हमें वही त्रुटि दिखाई देती, लेकिन थोड़े अलग संदेश के साथ:

SELECT 
    c.CatId,
    c.CatName
FROM Cats
INNER JOIN Dogs d
ON c.CatName = d.DogName;

परिणाम:

ERROR 1054 (42S22): Unknown column 'c.CatId' in 'field list'

इस मामले में, यह ON . में से एक को खोजने से पहले फ़ील्ड सूची में अज्ञात कॉलम का पता लगाता है खंड। किसी भी तरह से, समाधान वही है।

उदाहरण 3

यहां कोड का एक और उदाहरण दिया गया है जो त्रुटि उत्पन्न करता है:

SELECT 
    c.CatId,
    c.CatName
FROM Cats c
INNER JOIN Dogs d
ON Cats.CatName = d.DogName;

परिणाम:

ERROR 1054 (42S22): Unknown column 'Cats.CatName' in 'on clause'

इस मामले में, Cats . के लिए एक उपनाम घोषित किया गया था तालिका, लेकिन मैंने उस उपनाम का उपयोग ON . में नहीं किया खंड।

यहाँ समाधान, तालिका नाम के बजाय उपनाम का उपयोग करना है:

SELECT 
    c.CatId,
    c.CatName
FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कैसे CHARSET () मारियाडीबी में काम करता है

  2. CentOS 8 . पर मारियाडीबी कैसे स्थापित करें

  3. स्वीडन की नई इलेक्ट्रॉनिक पहचान फ़्रीजा eID . के पीछे डेटाबेस स्वचालन

  4. मारियाडीबी में डेटाटाइम मान से माइक्रोसेकंड घटाएं

  5. कैसे TO_DAYS () मारियाडीबी में काम करता है