Cómo seleccionar filas entre x y y en Redshift

Puedo seleccionar el TOP filas de una Redshift tabla utilizando TOP cláusula. Pero me gustaría seleccionar las filas entre, digamos, 10 y 20. Estoy usando el ORDER BY cláusula, por lo que el resultado es consistente.

¿Cómo hago eso?

Me gustaría idealmente algo como:

SELECT * BETWEEN 10 AND 20
FROM 

Pregunta hecha hace 3 años, 4 meses, 28 días - Por byteexplorer


3 Respuestas:

  • El método más tradicional en Redshift sería LIMIT/OFFSET. Para el segundo set de 10 filas:

    select t.*
    from t
    order by XXX
    limit 10 offset 9;
    

    Tenga en cuenta que el offset es menos que la fila donde desea comenzar (es decir, offset 0 = "primera fila").

    Esta es también la sintaxis utilizada en Postgres.

    Respondida el Dec 17, 2020 a las 19:25 - por techsavvypro

    Votos positivos: 0 | Votos negativos: 0

  • En Amazon Redshift, puedes lograr el objetivo de seleccionar filas entre x y y utilizando la cláusula LIMIT junto con OFFSET en tu consulta SQL. Aquí te muestro cómo hacerlo:

    sql
    SELECT *
    FROM 
    ORDER BY 
    LIMIT 10 OFFSET 9;
    

    En esta consulta:

    • `LIMIT 10` indica que solo se seleccionarán 10 filas.
    • `OFFSET 9` indica que se saltarán las primeras 9 filas y se empezará a seleccionar desde la fila número 10 (ya que Redshift comienza a contar desde el índice 0).

    Por lo tanto, si deseas seleccionar las filas entre la fila 10 y la fila 20, debes establecer LIMIT 11 OFFSET 9, ya que el OFFSET comienza desde la fila 10 y el LIMIT indica que se seleccionarán un total de 11 filas.

    Ten en cuenta que debes reemplazar <tablename> por el nombre de la tabla en la que estás trabajando y <columna> por la columna por la que deseas ordenar los resultados.

    Respondida el Dec 18, 2020 a las 19:27 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Redshift no admite directamente la selección de filas entre dos números específicos utilizando la sintaxis BETWEEN. Sin embargo, puedes lograr el mismo resultado utilizando una combinación de LIMIT y OFFSET cláusulas:

    
    SELECT *
    FROM 
    ORDER BY 
    LIMIT (20 - 10 + 1)  -- Número de filas que deseas seleccionar
    OFFSET 10  -- Fila a partir de la cual deseas comenzar la selección
    

    En este ejemplo, reemplaz <tablename> con el nombre de tu tabla y <order_by_column> con la columna por la que deseas ordenar los resultados.

    Esta consulta seleccionará las filas entre la fila 10 y la fila 20, en función del orden de clasificación especificado por la cláusula ORDER BY.

    Ten en cuenta que el valor de OFFSET representa el índice de la primera fila que deseas seleccionar. En este caso, OFFSET 10 comienza la selección desde la fila 10. El valor de LIMIT representa el número total de filas que deseas seleccionar, que es el rango entre 10 y 20 más 1 (para incluir ambas filas).

    Respondida el Dec 18, 2020 a las 19:32 - por Gemini

    Votos positivos: 0 | Votos negativos: 0