Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zapytanie SQL:Jak mogę uzyskać dane wiersza o numerze 1000 bezpośrednio?

row_number to najlepsze podejście, ale ponieważ chcesz mieć tylko jeden wiersz, spójrz na plan. Może się okazać, że lepiej zidentyfikować żądany wiersz, a następnie dołączyć z powrotem do oryginalnej tabeli, aby pobrać dodatkowe kolumny.

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;

Daje

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;  

Daje



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jakie są różne sposoby wstawiania danych do tabeli SQL Server — SQL Server / samouczek TSQL, część 100?

  2. Funkcja podziału w SQL Server 2008

  3. odejmij wartości dwóch wierszy i wstaw je do nowej kolumny (nie kolejnych wierszy)

  4. Zalecana metoda importowania pliku .csv do programu Microsoft SQL Server 2008 R2?

  5. Jak selektywnie zaimportować XLS do tabeli SQL Server 2008?