SQL में 1 से पूर्णांक कॉलम के मान को कैसे बढ़ाया जाए


91

मेरे सवाल है

कैसे एक कॉलम के मूल्य को 1 से बढ़ाएँ।

उदाहरण के लिए, मान लें कि किसी स्तंभ IDका मान 1,2,3,4 है, ।।

अब जब मैं इस तालिका को अद्यतन करता हूं तो IDकॉलम को 1 से बढ़ाना चाहिए,

अब IDबनेंगे 2,3,4,5, ।।


आप चाहते हैं के बारे में कोई नमूना? 1 पंक्ति के लिए 1 से वेतन वृद्धि कॉलम का मूल्य? सभी पंक्तियाँ? आपकी तालिका (DDL) कौन सी है? डेटा नमूने (DML)?
किकेनेट

जवाबों:


154

तालिका में प्रत्येक मान में एक जोड़ने के लिए ...

UPDATE myTable
SET ID = ID + 1

एक नया मान बनाने के लिए, एक और फिर पिछले उच्चतम (आमतौर पर), पहचान के साथ एक कॉलम का उपयोग करें


39
कृपया ध्यान दें कि कॉलम NULL होने पर यह काम नहीं करता है। वेतन वृद्धि के बाद भी NULL कॉलम NULL बने रहते हैं। इसे हल करने के लिए, इस तरह के ISNULLकथन का उपयोग करें: UPDATE myTable SET ID = ISNULL(ID, 0) + 1( इस SO उत्तर से लिया गया )
Uwe Keim

SET [Lic] = [Lic] + @dif। नोट @dif वेरिएबल पॉजिटिव, 0 या निगेटिव हो सकता है
Kiquenet

42

यदि आप चाहते हैं कि स्वचालित रूप से उत्पन्न प्रत्येक पंक्ति के लिए एक अद्वितीय संख्या हो, तो यह नील के उत्तर के अनुसार पहचान है।

यदि हर बार जब आप उस तालिका को अपडेट करते हैं जो आप मानों को बढ़ाना चाहते हैं (यानी वे कुंजी नहीं हैं):

Update MyTable
Set IDColumn = IDColumn + 1
Where <whatever>


1

आप उपयोग कर सकते हैं IDENTITYजो आपके लिए ऐसा करेगा।

CREATE TABLE [dbo].[MyTable](
    [MyTableID] [int] IDENTITY(1,1) NOT NULL,
    -- Other columns
)

जब आप अपना पहला रिकॉर्ड डालते हैं, तो आपको Id1 मिलेगा ।


1

ओरेकल में कोड थोड़ा और अधिक मुश्किल है।

आपको अनुक्रम ऑब्जेक्ट के साथ एक ऑटो-इन्क्रीमेंट फ़ील्ड बनाना होगा (यह ऑब्जेक्ट एक क्रम बनाता है)।

निम्नलिखित सृजन अनुक्रम वाक्यविन्यास का उपयोग करें:

CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10

ऊपर दिया गया कोड seq_person नामक एक अनुक्रम ऑब्जेक्ट बनाता है, जो 1 से शुरू होता है और 1 से बढ़ेगा। यह प्रदर्शन के लिए 10 मान तक कैश भी करेगा। कैश विकल्प यह निर्दिष्ट करता है कि तेजी से पहुंच के लिए मेमोरी में कितने अनुक्रम मान संग्रहीत किए जाएंगे।

"व्यक्ति" तालिका में एक नया रिकॉर्ड सम्मिलित करने के लिए, हमें अगले फ़ंक्शन का उपयोग करना होगा (यह फ़ंक्शन seq_person अनुक्रम से अगला मान पुनर्प्राप्त करता है):

INSERT INTO Persons (ID,FirstName,LastName)
VALUES (seq_person.nextval,'Lars','Monsen')

ऊपर दिए गए SQL स्टेटमेंट में "Persons" टेबल में एक नया रिकॉर्ड डाला जाएगा। "आईडी" कॉलम को seq_person अनुक्रम से अगला नंबर सौंपा जाएगा। "FirstName" कॉलम "Lars" पर सेट किया जाएगा और "LastName" कॉलम "Monsen" पर सेट किया जाएगा।


1

आप निम्नलिखित की कोशिश कर सकते हैं:

DECLARE @i INT
SET @i = @@ROWCOUNT + 1

INSERT INTO YourTable
        (Identity Column)    
VALUES    
        (@i + 1)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.