it-swarm.com.de

So erstellen Sie ein Auto-Inkrement-Feld in einer Auswahlabfrage

Zum Beispiel habe ich eine Tabelle mit 2 Spalten, first_name und last_name mit diesen Werten

ALi           Khani
Elizabette    Amini
Britney       Spears
,...

Ich möchte eine select-Abfrage schreiben, die eine Tabelle wie folgt generiert:

1     ALi           Khani
2     Elizabette    Amini
3     Britney       Spears
,...

Danke für Ihre Hilfe.

61
wf Khani

Wenn es sich um MySql handelt, können Sie es versuchen

SELECT @n := @n + 1 n,
       first_name, 
       last_name
  FROM table1, (SELECT @n := 0) m
 ORDER BY first_name, last_name

SQLFiddle

Und für SQLServer

SELECT row_number() OVER (ORDER BY first_name, last_name) n,
       first_name, 
       last_name 
  FROM table1 

SQLFiddle

113
peterm

hier ist für SQL server, Oracle, PostgreSQL welche Fensterfunktionen unterstützen.

SELECT  ROW_NUMBER() OVER (ORDER BY first_name, last_name)  Sequence_no,
        first_name,
        last_name
FROM    tableName
26
John Woo

Wenn Sie keinen natürlichen Partitionswert haben und nur eine geordnete Nummer unabhängig von der Partition wünschen, können Sie eine row_number über eine Konstante ausführen. Im folgenden Beispiel habe ich nur 'X' verwendet

select 
    ROW_NUMBER() OVER(PARTITION BY num ORDER BY col1) as aliascol1, 
    period_next_id, period_name_long
from 
(
  select distinct col1, period_name_long, 'X' as num
  from {TABLE} 
) as x
3
balgar jagpal
DECLARE @id INT 
SET @id = 0 
UPDATE cartemp
SET @id = CarmasterID = @id + 1 
GO
0
Dev3