복붙노트

[SQL] SQL 서버에서와 연합 ORDER를 결합

SQL

SQL 서버에서와 연합 ORDER를 결합

어떻게 하나의 결과 세트에서 테이블과 테이블의 마지막 레코드의 첫 번째 레코드를받을 수 있나요?

이 쿼리는 실패

SELECT TOP 1 Id,Name FROM Locations ORDER BY Id
UNION ALL
SELECT TOP 1 Id,Name FROM Locations ORDER BY Id DESC

어떤 도움?

해결법

  1. ==============================

    1.하위 쿼리에 최고 진술에 의해 주문을 넣어 :

    하위 쿼리에 최고 진술에 의해 주문을 넣어 :

    select first.Id, first.Name 
    from (
        select top 1 * 
        from Locations 
        order by Id) first
    union all
    select last.Id, last.Name 
    from (
        select top 1 * 
        from Locations 
        order by Id desc) last
    
  2. ==============================

    2.

    select * from (
    SELECT TOP 1 Id,Name FROM Locations ORDER BY Id) X
    UNION ALL
    SELECT TOP 1 Id,Name FROM Locations ORDER BY Id DESC
    
  3. ==============================

    3.당신은 2005 또는 나중에 SQL Server에서 작업하는 경우 :

    당신은 2005 또는 나중에 SQL Server에서 작업하는 경우 :

    ; WITH NumberedRows as (
        SELECT Id,Name,
           ROW_NUMBER() OVER (ORDER BY Id) as rnAsc,
           ROW_NUMBER() OVER (ORDER BY Id desc) as rnDesc
        FROM
            Locations
    )
    select * from NumberedRows where rnAsc = 1 or rnDesc = 1
    

    테이블의 한 행이 있다면 (이 경우 내 대답을 반환 한 행에 당신이 두 번 같은 행을 반환하는 반면)이 원래 쿼리 될 수 없다 유일한 장소입니다

  4. ==============================

    4.

    SELECT TOP 1 Id as sameColumn,Name FROM Locations 
    UNION ALL
    SELECT TOP 1 Id as sameColumn,Name FROM Locations ORDER BY sameColumn DESC
    
  5. from https://stackoverflow.com/questions/5551064/combining-order-by-and-union-in-sql-server by cc-by-sa and MIT license