sql >> Database >  >> RDS >> Sqlserver

SQL-query:hoe kan ik gegevens van een rij met nummer 1000 rechtstreeks krijgen?

row_number is de beste aanpak, maar aangezien u slechts één rij wilt, moet u naar het plan kijken. Het kan beter zijn om de gewenste rij te identificeren en vervolgens terug te gaan naar de originele tabel om extra kolommen op te halen.

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;

Geeft

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;  

Geeft



  1. MySQL:Waarom is DELETE CPU-intensiever dan INSERT?

  2. MySQL:selecteer meerdere rijen met waarden uit één kolom

  3. Een if-voorwaarde gebruiken in een SQL Server-insert

  4. Datumbereik splitsen in één rij per maand in sql-server