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.
sql-server
auto-increment
wf Khani
quelle
quelle
Antworten:
Wenn es MySQL ist, 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
quelle
table1
stattfirst_name
undlast_name
, wie kann ich auf alle beziehen? Der VersuchSELECT @n := @n + 1 n, *
funktioniert nichtSELECT @n := @n + 1 n, table1.*
SET @n = 0;
(SELECT @n := 0)
. Das Verborgene an diesem Ansatz ist, dass Sie eine einzige Anweisung anstelle von zwei haben. Dies ist gut, wenn mehrere Anweisungen in Ihrem Client-Code verboten sind.Hier ist, für
SQL server, Oracle, PostgreSQL
welche Support-Fenster Funktionen.SELECT ROW_NUMBER() OVER (ORDER BY first_name, last_name) Sequence_no, first_name, last_name FROM tableName
quelle
Wenn Sie keinen natürlichen Partitionswert haben und unabhängig von der Partition nur eine geordnete Nummer möchten, können Sie einfach eine Zeilennummer über einer Konstanten erstellen. Im folgenden Beispiel habe ich gerade 'X' verwendet. Hoffe das hilft jemandem
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
quelle
DECLARE @id INT SET @id = 0 UPDATE cartemp SET @id = CarmasterID = @id + 1 GO
quelle