Por ejemplo, tengo una tabla con 2 columnas first_name
y last_name
con estos valores
Ali Khani
Elizabette Amini
Britney Spears
,...
Quiero escribir una select
consulta que genere una tabla como esta:
1 Ali Khani
2 Elizabette Amini
3 Britney Spears
,...
Gracias por tu ayuda.
sql-server
auto-increment
wf Khani
fuente
fuente
Respuestas:
Si es MySql puedes probar
SELECT @n := @n + 1 n, first_name, last_name FROM table1, (SELECT @n := 0) m ORDER BY first_name, last_name
SQLFiddle
Y para SQLServer
SELECT row_number() OVER (ORDER BY first_name, last_name) n, first_name, last_name FROM table1
SQLFiddle
fuente
table1
lugarfirst_name
ylast_name
cómo puedo hacer referencia a todas? IntentarSELECT @n := @n + 1 n, *
no funcionaSELECT @n := @n + 1 n, table1.*
SET @n = 0;
(SELECT @n := 0)
. La belleza oculta de este enfoque es que tiene una sola declaración en lugar de dos, lo cual es bueno cuando se prohíben varias declaraciones en su código de cliente.aquí está para
SQL server, Oracle, PostgreSQL
qué funciones de la ventana de soporte.SELECT ROW_NUMBER() OVER (ORDER BY first_name, last_name) Sequence_no, first_name, last_name FROM tableName
fuente
En el caso de que no tenga un valor de partición natural y solo desee un número ordenado independientemente de la partición, puede simplemente hacer un número de fila sobre una constante, en el siguiente ejemplo acabo de usar 'X'. Espero que esto ayude a alguien
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
fuente
DECLARE @id INT SET @id = 0 UPDATE cartemp SET @id = CarmasterID = @id + 1 GO
fuente