seleccionar registros para numerar number fila especifica enumerar contar consulta columnas campos sql sql-server row-number

sql - registros - Especifique manualmente el valor de inicio para Row_Number()



sql para contar (3)

Algunas veces....

ROW_NUMBER () puede no ser la mejor solución, especialmente cuando podría haber registros duplicados en el conjunto de datos subyacentes (para consultas de JOIN, etc.). Esto puede resultar en más filas devueltas de lo esperado. Puede considerar la creación de una SECUENCIA que, en algunos casos, puede considerarse una solución más limpia. es decir:

CREATE SEQUENCE myRowNumberId START WITH 1 INCREMENT BY 1 GO SELECT NEXT VALUE FOR myRowNumberId AS ''idd'' -- your query GO DROP SEQUENCE myRowNumberId; -- just to clean-up after ourselves GO

El inconveniente es que las secuencias pueden ser difíciles de usar en consultas complejas con las funciones de DISTINCT, WINDOW, etc. Vea la documentación completa de la secuencia here .

Quiero definir el inicio de ROW_NUMBER() como 3258170 lugar de 1 .

Estoy usando la siguiente consulta SQL

SELECT ROW_NUMBER() over(order by (select 3258170)) as ''idd''.

Sin embargo, la consulta anterior no funciona. Cuando digo que no funciona, me refiero a su ejecución pero no a partir de 3258170 . ¿Puede alguien ayudarme?

La razón por la que quiero especificar el número de fila es que estoy insertando filas de una tabla a otra. En la primera tabla, el número de la fila del último registro es 3258169 y cuando inserto registros nuevos quiero que tengan el número de la fila del 3258170 .


Siento que esto es mas facil

ROW_NUMBER() OVER(ORDER BY Field) - 1 AS FieldAlias (To start from 0) ROW_NUMBER() OVER(ORDER BY Field) + 3258169 AS FieldAlias (To start from 3258170)


Solo agregue el valor al resultado de row_number() :

select 3258170 - 1 + row_number() over (order by (select NULL)) as idd

La order by cláusula de row_number() especifica qué columna se usa para el pedido por. Al especificar una constante allí, simplemente está diciendo que "todo tiene el mismo valor para realizar pedidos". No tiene nada, nada que ver con el primer valor elegido.

Para evitar confusiones, reemplacé el valor constante con NULL. En SQL Server, he observado que esto asigna un número secuencial sin ordenar realmente las filas, una ventaja observada en el rendimiento, pero no una que haya visto documentada, por lo que no podemos depender de ella.