sql >> Databáze >  >> RDS >> Sqlserver

SQL Query:Jak mohu získat data řádku s číslem 1000 přímo?

row_number je nejlepší přístup, ale protože chcete pouze jeden řádek, nezapomeňte se podívat na plán. Může se ukázat lepší identifikovat požadovaný řádek a poté se připojit zpět k původní tabulce a získat další sloupce.

WITH T1
     AS (SELECT *,
                ROW_NUMBER() OVER (ORDER BY number) AS RN
         FROM   master..spt_values)
SELECT name,
       number,
       type,
       low,
       high,
       status
FROM   T1
WHERE  RN = 1000;

Dává

WITH T2
     AS (SELECT number,
                type,
                name,
                ROW_NUMBER() OVER (ORDER BY number) AS RN
         FROM   master..spt_values)
SELECT TOP 1 C.name,
             C.number,
             C.type,
             C.low,
             C.high,
             C.status
FROM   T2
       CROSS APPLY (SELECT *
                    FROM   master..spt_values v
                    WHERE  v.number = T2.number
                           AND v.type = T2.type
                           AND ( v.name = T2.name
                                  OR ( v.name IS NULL
                                       AND T2.name IS NULL ) )) C
WHERE  RN = 1000;  

Dává



  1. Přidání tabulky s FOREIGN KEY do databáze MySQL způsobí chybu 150

  2. Při chybě obnovte další typ zpracování chyb v PL/SQL oracle

  3. Docker image běží na procesoru m1

  4. Connect DATABASE Error TYPE:2002:Oprávnění odepřeno