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

कैसे ठीक करें "INSERT कथन के लिए चयन सूची में सम्मिलित सूची से कम आइटम हैं"

SQL सर्वर त्रुटि 120 तब होती है जब आप अपने INSERT . में पर्याप्त कॉलम निर्दिष्ट नहीं करते हैं SELECT . का उपयोग करते समय सूची डालने के लिए मूल्यों की सूची।

अधिक विशिष्ट होने के लिए, ऐसा तब होता है जब आप SELECT . का उपयोग करते हैं अपने INSERT . में सूची बनाएं कथन, लेकिन SELECT सूची उतने कॉलम नहीं लौटाती जितनी आप INSERT . के साथ निर्दिष्ट कर रहे हैं ।

इसे ठीक करना आसान है। बस सुनिश्चित करें कि आपके INSERT . के बीच कॉलम की संख्या मेल खाती है और SELECT सूची।

खराब कोड

यहां कोड का एक उदाहरण दिया गया है जो इस त्रुटि का कारण बनता है।

INSERT INTO OrdersLatest (
    OrderId, 
    OrderDate, 
    OrderDesc
    )
SELECT 
    OrderId,
    OrderDate
FROM OrdersMarch;

परिणाम:

Msg 120, Level 15, State 1, Line 1
The select list for the INSERT statement contains fewer items than the insert list. The number of SELECT values must match the number of INSERT columns.

इस मामले में, मैं अपने INSERT . में तीन कॉलम निर्दिष्ट करता हूं , लेकिन मैं अपने SELECT . में केवल दो कॉलम चुनता हूं सूची।

अच्छा कोड

ऊपर दी गई गड़बड़ी को ठीक करने का तरीका यहां बताया गया है।

INSERT INTO OrdersLatest (
    OrderId, 
    OrderDate, 
    OrderDesc
    )
SELECT 
    OrderId,
    OrderDate, 
    OrderDesc
FROM OrdersMarch;

परिणाम:

(5 rows affected)

मैंने केवल OrderDesc जोड़ा था SELECT . के लिए कॉलम सूची।

कम कॉलम निर्दिष्ट करना

पिछला उदाहरण स्पष्ट रूप से मानता है कि मैं अतिरिक्त कॉलम डालना चाहता था। अगर हम नहीं चाहते थे कि कॉलम डाला जाए, तो हमें इसे INSERT से हटा देना चाहिए था। पूरी तरह से।

इस तरह।

INSERT INTO OrdersLatest (
    OrderId, 
    OrderDate
    )
SELECT 
    OrderId,
    OrderDate
FROM OrdersMarch;

हालांकि, यह इस बात पर निर्भर करेगा कि हमारे पास कोई NOT NULL है या नहीं गंतव्य तालिका पर बाधाएं।

चयन सूची में वाइल्डकार्ड का उपयोग करना

तारक का उपयोग करना भी संभव है (* ) वाइल्डकार्ड SELECT . में सूची।

INSERT INTO OrdersLatest (
    OrderDate, 
    OrderId, 
    OrderDesc
    )
SELECT *
FROM OrdersMarch;

हालांकि इसे अच्छा अभ्यास नहीं माना जाता है, क्योंकि आप गलती से गलत कॉलम चुन सकते हैं, या वे गलत क्रम में हो सकते हैं, आदि।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक ही सर्वर पर एकाधिक डेटाबेस में क्वेरी

  2. SQL सर्वर में कनेक्शन के लिए संयोजन कैसे सेट करें?

  3. SQL सर्वर में एक जाँच बाधा कैसे बनाएँ (T-SQL उदाहरण)

  4. SQL सर्वर कर्सर में एकाधिक मान प्राप्त करें

  5. SQL - पंक्तियों से घटते मान को घटाना