Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL заявка:Как мога да получа данни от ред с номер 1000 директно?

row_number е най-добрият подход, но тъй като искате само един ред, не забравяйте да погледнете плана. Може да се окаже по-добре да идентифицирате желания ред, след което да се присъедините към оригиналната таблица, за да извлечете допълнителни колони.

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;

Дава

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;  

Дава



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да създадете композитен първичен ключ в SQL Server (пример за T-SQL)

  2. Стойност на първичен ключ след вмъкване на ред в SQL Server 2005

  3. Как да разбера дали даден низ съдържа специални символи?

  4. Класически ADO.NET - Как да предам UDT към съхранена процедура?

  5. показване на отчетни седмици