내 쿼리에서 열에 특정 값이 포함 된 테이블의 행을 먼저 반환 한 다음 나머지 행을 알파벳순으로 반환하고 싶습니다.
이 예제와 같은 테이블이있는 경우 :
- 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입니다