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

एसक्यूएल:चयन करने के लिए वृद्धिशील आईडी के साथ कॉलम जोड़ें

ROW_NUMBER() का उपयोग करें :

SQLFiddle

SELECT 
  name,
  ROW_NUMBER() OVER (ORDER BY name) AS id
FROM people;

संपादित करें:

ORDER BY 1 . के बीच अंतर बनाम ORDER BY column_name

SQLFiddleDemo

SELECT 
    name,
    ROW_NUMBER() OVER (ORDER BY name) AS id
FROM people;

/* Execution Plan */
QUERY PLAN WindowAgg (cost=83.37..104.37 rows=1200 width=38)
-> Sort (cost=83.37..86.37 rows=1200 width=38)
**Sort Key: name**
-> Seq Scan on people (cost=0.00..22.00 rows=1200 width=38)

SELECT 
    name,
    ROW_NUMBER() OVER (ORDER BY 1) AS id
FROM people;

/* Execution Plan */
QUERY PLAN WindowAgg (cost=0.00..37.00 rows=1200 width=38)
-> Seq Scan on people (cost=0.00..22.00 rows=1200 width=38)

दूसरे मामले में कोई सॉर्ट ऑपरेशन नहीं होता है।

आप दूसरी क्वेरी इस प्रकार भी लिख सकते हैं:

SELECT 
    name,
    ROW_NUMBER() OVER () AS id
FROM people;

लोग ORDER BY 1 क्यों लिखते हैं? खिड़की वाले कार्यों में?

क्योंकि कुछ बोलियों में इसकी आवश्यकता होती है और ORDER BY 1 प्लेसहोल्डर की तरह काम करता है।

ओरेकल:

SELECT 
  name,
  ROW_NUMBER() OVER (ORDER BY 1) AS id
FROM people;

टीएसक्यूएल:

SELECT 
    name,
    ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS id
FROM people;


  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. PostGIS डेटाबेस के साथ GeoDjango ऐप का परीक्षण करना

  3. क्या PostgreSQL में ज़िप () फ़ंक्शन जैसा कुछ है जो दो सरणियों को जोड़ता है?

  4. हर बार एक अलग क्रम में pg_dump डंप डेटाबेस पोस्टग्रेज करता है

  5. JOOQ PostgreSQL कस्टम प्रकार के साथ एक सरणी के रूप में विफल रहता है:त्रुटि:विकृत रिकॉर्ड शाब्दिक