Aquí está mi consulta dada a continuación.

select * from data where value = "yes";

Mi id es de incremento automático y a continuación es el resultado de la consulta dada.

id || value 
1  ||   yes
3  ||   yes
4  ||   yes
6  ||   yes
9  ||   yes

Cómo utilizar ROW_NUMBER en sqlite? Por lo que puedo conseguir el resultado que se presenta a continuación.

NoId || value 
1    ||   yes
2    ||   yes
3    ||   yes
4    ||   yes
5    ||   yes

ROW_NUMBER COMO NoId.

stackoverflow.com/questions/9151706/…
Es id un incremento automático o un PK columna? Tienen su tratado de SELECT _ROWID_?
No duplicar exactamente, porque el OP parece estar preguntando sobre el ROWID de un análisis completo de la tabla, en lugar de la ROWID de una consulta específica.
Para consulta de toda la tabla?
Los datos parecen indicar que sí. Sé que es posible superar eso con la respuesta que está conectado, pero podría ser innecesario y más lento (dependiendo de la definición de columna para id).

OriginalEl autor Abox LsrKdz | 2013-05-30

4 Comentarios

  1. 20

    Pruebe esta consulta

    select id, value, (select count(*) from tbl b  where a.id >= b.id) as cnt
    from tbl a

    El VIOLÍN

    | id | value | cnt |
    --------------------
    |  1 |   yes |   1 |
    |  3 |   yes |   2 |
    |  4 |   yes |   3 |
    |  6 |   yes |   4 |
    |  9 |   yes |   5 |
    no hay trabajo en sqlite la cnt todavía 1,3,4,6,9
    Compruebe el violín. Es el uso de sqllite .. Puede usted por favor enviar la consulta que se está usando.
    stackoverflow.com/questions/19445155/…
    Aquí hay una solución mejor: stackoverflow.com/a/19199219/1037294

    OriginalEl autor Meherzad

  2. 4

    SQLite Versión 3.25.0 añadirá soporte para las funciones de la ventana

    2018-09-00 (3.25.0)

    1. Añadir soporte para las funciones de la ventana

    Las Funciones De La Ventana :

    Una función de ventana es un tipo especial de función SQL donde los valores de entrada son de una «ventana» de una o más filas en el conjunto de resultados de una instrucción SELECT.

    SQLite es compatible con los siguientes 11 integradas en las funciones de la ventana:

    row_number()

    El número de la fila dentro de la partición actual. Las filas se numeran a partir del 1 en el orden definido por la cláusula ORDER by en la ventana de definición, o en orden arbitrario de otra manera.

    Por lo que su consulta se podría reescribir así:

    select *, ROW_NUMBER() OVER(ORDER BY Id) AS NoId
    from data 
    where value = "yes";
    Maravilloso. Funciona muy bien en funciones de agregado.

    OriginalEl autor Lukasz Szozda

  3. 2

    Me arreglaba un poco con fiddleanswer y tengo exactamente el resultado como se esperaba

    select id, value , 
           (select count(*) from data b where a.id >= b.id and b.value='yes') as cnt 
    from data a where  a.value='yes';
    
    result
    1|yes|1
    3|yes|2
    4|yes|3
    6|yes|4
    9|yes|5
    Esto sólo significa que no existe tal funcionalidad en SQLite. Me pregunto si esto es O(n^2) por el camino…
    Sí, esto es n^2-ish. No lo hagas 🙂

    OriginalEl autor user3198319

Dejar respuesta

Please enter your comment!
Please enter your name here