먼저 특정 필드 값으로 정렬
세 개의 열이 있는 테이블이 있습니다.
id | name | priority
--------------------
1 | core | 10
2 | core | 9
3 | other | 8
4 | board | 7
5 | board | 6
6 | core | 4
다음을 사용하여 결과 세트를 주문하고 싶습니다.priority
하지만 먼저 그 행들은name=core
더 낮은 우선순위가 있더라도요.결과는 다음과 같습니다.
id | name | priority
--------------------
6 | core | 4
2 | core | 9
1 | core | 10
5 | board | 6
4 | board | 7
3 | other | 8
MySQL 기능도 있습니다.
가능한 모든 값에 대해 완전한 정렬을 원하는 경우:
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core", "board", "other")
"core"가 우선이고 다른 값이 중요하지 않은 경우:
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core") DESC
먼저 "core"를 기준으로 정렬하고 다른 필드를 일반 정렬 순서로 정렬하는 경우:
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core") DESC, priority
단, 여기에는 몇 가지 경고가 있습니다.
우선, 이것은 mysql만의 기능이라고 확신합니다.문제는 mysql 태그가 붙어 있습니다만, 모르는 일입니다.
둘째, 어떻게 하면FIELD()
works: 값의 1 베이스 인덱스를 반환합니다.FIELD(priority, "core")
"core"가 값이면 1이 반환됩니다.필드 값이 목록에 없으면 0이 반환됩니다.이래서DESC
가능한 모든 값을 지정하지 않으면 필수입니다.
일반적으로는 할 수 있다
select * from your_table
order by case when name = 'core' then 1 else 2 end,
priority
특히 MySQL에서는
select * from your_table
order by name <> 'core',
priority
MySQL의 비교 결과는 다음 중 하나이기 때문에0
또는1
그 결과에 따라 정렬할 수 있습니다.
특정 행에 우선순위를 부여하는 방법 중 하나는 해당 우선순위에 큰 수를 추가하는 것입니다.이 작업을 수행할 수 있습니다.CASE
스테이트먼트:
select id, name, priority
from mytable
order by priority + CASE WHEN name='core' THEN 1000 ELSE 0 END desc
데모: http://www.sqlfiddle.com/ #! 2/753ee/1
이것은 Postgres 9+를 사용하는 경우에 유효합니다.
SELECT *
FROM your_table
ORDER BY name = 'core' DESC, priority DESC
한 가지 방법은 다음과 같습니다.
select id, name, priority from table a
order by case when name='core' then -1 else priority end asc, priority asc
SELECT * FROM cars_new WHERE status = '1' and car_hide !='1' and cname IN ('Executive Car','Saloon','MPV+','MPV5') ORDER BY FIELD(cname, 'Executive Car', 'Saloon','MPV+','mpv5')
다음을 수행합니다.
SELECT * FROM table ORDER BY column `name`+0 ASC
+0을 추가하면 다음과 같이 됩니다.
0, 10, 11, 2, 3, 4
다음과 같이 됩니다.
0, 2, 3, 4, 10, 11
사용방법:
SELECT *
FROM tablename
ORDER BY priority desc, FIELD(name, "core")
언급URL : https://stackoverflow.com/questions/14104055/ordering-by-specific-field-value-first
'programing' 카테고리의 다른 글
jQuery 확인란이 상태 변경 이벤트 선택됨 (0) | 2023.02.02 |
---|---|
SQL이 테이블의 값을 다른 테이블에서 바꿉니다. (0) | 2023.02.02 |
jQuery를 사용하여 입력 텍스트 값을 설정하는 방법 (0) | 2023.01.13 |
MySQL JDBC 드라이버 연결 문자열이란 무엇입니까? (0) | 2023.01.13 |
String switch 문이 늘 케이스를 지원하지 않는 이유는 무엇입니까? (0) | 2023.01.13 |