query not array sqlite3 insert-select

sqlite3 - not - ¿SQLITE equivalente para el ROWNUM de Oracle?



sqlite select where in (2)

Ningún SQLite no tiene un equivalente directo al ROWNUM de Oracle.

Si entiendo tu requerimiento correctamente, deberías poder agregar una columna numerada basada en el orden de la tabla anterior de esta manera:

create table old (col1, col2); insert into old values (''d'', 3), (''s'', 3), (''d'', 1), (''w'', 45), (''b'', 5465), (''w'', 3), (''b'', 23); create table new (colPK INTEGER PRIMARY KEY AUTOINCREMENT, col1, col2); insert into new select NULL, col1, col2 from old order by col1, col2;

La nueva tabla contiene:

.headers on .mode column select * from new; colPK col1 col2 ---------- ---------- ---------- 1 b 23 2 b 5465 3 d 1 4 d 3 5 s 3 6 w 3 7 w 45

AUTOINCREMENT hace lo que sugiere su nombre: cada fila adicional tiene el valor previo ''incrementado en 1.

Estoy agregando una columna de ''índice'' a una tabla en SQLite3 para permitir a los usuarios reordenar fácilmente los datos, al renombrar la base de datos anterior y crear una nueva en su lugar con las columnas adicionales.

El problema que tengo es que necesito dar a cada fila un número único en la columna ''índice'' cuando INSERTO ... SELECCIONE los valores anteriores.

Una búsqueda que hice apareció un término útil en Oracle llamado ROWNUM, pero SQLite3 no tiene eso. ¿Hay algo equivalente en SQLite?


Puede usar uno de los nombres de filas especiales ROWID , OID o _ROWID_ para obtener el rowid de una columna. Consulte http://www.sqlite.org/lang_createtable.html#rowid para obtener más detalles (y que las filas pueden estar ocultas por columnas normales llamadas ROWID etc.).