[sql] 특정 값이있는 행을 먼저 반환하려면 어떻게해야합니까?

내 쿼리에서 열에 특정 값이 포함 된 테이블의 행을 먼저 반환 한 다음 나머지 행을 알파벳순으로 반환하고 싶습니다.

이 예제와 같은 테이블이있는 경우 :

 - Table: Users
 - id - name -  city
 - 1    George  Seattle
 - 2    Sam     Miami
 - 3    John    New York
 - 4    Amy     New York
 - 5    Eric    Chicago
 - 6    Nick    New York

그리고 그 테이블을 사용하여 먼저 뉴욕을 포함하는 행을 반환 한 다음 도시별로 알파벳순으로 표시된 나머지 행을 반환하려고합니다. 하나의 쿼리 만 사용할 수 있습니까?



답변

SQL Server, Oracle, DB2 및 기타 여러 데이터베이스 시스템에서 다음을 사용할 수 있습니다.

ORDER BY CASE WHEN city = 'New York' THEN 1 ELSE 2 END, city


답변

SQL 언어가 부울 표현식을 숫자 값으로 처리 할만큼 지능적인 경우 다음을 사용할 수 있습니다.

SELECT *
FROM `Users`
ORDER BY (`city` = 'New York') DESC, `city`


답변

내 대답은 오래되고 필수는 아니지만 누군가 다른 접근 방식이 필요할 수 있으므로 여기에 게시하십시오.

나는 이것을 구현 한 동일한 요구 사항이 있었고 나를 위해 일했습니다.

Select * from Users
ORDER BY
(CASE WHEN city = 'New York' THEN 0 ELSE 1 END), city
GO

추신

이것은 SQL입니다


답변