sql >> Database >  >> RDS >> PostgreSQL

SQL:kolom met incrementele id toevoegen aan SELECT

Gebruik ROW_NUMBER() :

SQLFiddle

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

BEWERKEN:

Verschil tussen ORDER BY 1 vs 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)

In het tweede geval is er geen sorteerbewerking.

U kunt ook een tweede zoekopdracht schrijven als:

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

Waarom mensen ORDER BY 1 schrijven in vensterfuncties?

Omdat het in sommige dialecten vereist is en ORDER BY 1 fungeert als tijdelijke aanduiding.

Orakel:

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

TSQL:

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


  1. Detecteer gebruikers die dezelfde webpagina of URL bekijken

  2. De kosten van uw databasehosting verlagen:DigitalOcean vs. AWS vs. Azure

  3. [A]MySql.Data.MySqlClient.MySqlConnection kan niet worden gecast naar [B]MySql.Data.MySqlClient.MySqlConnection

  4. postgres sortering verschillen. osx v ubuntu