문자열 목록별 SQL 순서?
표를 선택하여 특정 키워드 또는 키워드 목록별로 결과를 정렬하고 싶습니다.예를 들어 다음과 같은 테이블이 있습니다.
ID Code
1 Health
2 Freeze
3 Phone
4 Phone
5 Health
6 Hot
그래서 단순하게 하는 것보다.Order By asc/desc
그러고 싶어요.order by Health, Phone, Freeze, Hot
이것이 가능합니까?
사용해 보십시오.
select * from table
order by FIELD(Code, 'Health', 'Phone', 'Freeze', 'Hot')
여기 끔찍한 해킹이 있습니다.
select * from table
order by (
case Code
when 'Health' then 0
when 'Phone' then 1
when 'Freeze' then 2
when 'Hot' then 3
end
)
키워드 테이블과 함께 가입할 수 있으며, 시퀀스 열과 키워드별 주문을 포함할 수 있습니다.순서.
키워드 표의 예는 다음과 같습니다.
ID Code Sequence
1 Health 1
2 Freeze 3
3 Phone 2
4 Hot 4
그러면 가입할 수 있습니다.
SELECT *
FROM MyTable INNER JOIN
Keywords ON Keywords.ID = MyTable.KeywordID
ORDER BY Keywords.Sequence
이것이 당신에게 아이디어를 주기를 바랍니다.
요즘 MySQL은 다음과 같은 기능을 가지고 있습니다.find_in_set()
다음과 같이 사용합니다.
select * from table
order by find_in_set(Code,'Health','Phone','Freeze','Hot')
이것은 단지 하나의 할인입니까?ORDER BY
아니면 여기에 명시된 것보다 더 많은 가치에 따라 자주 하고 싶은 것이 있습니까?
지정한 순서는 임의이므로 원하는 것을 달성하기 위해 식별자가 지정되어야 합니다.
SELECT
ID,
Code,
CASE Code
WHEN 'Health' THEN 1
WHEN 'Phone' THEN 2
WHEN 'Freeze' THEN 3
WHEN 'Hot' THEN 4
END As OrderBy
FROM Table
ORDER BY
OrderBy
또는
SELECT
ID,
Code
FROM Table
ORDER BY
CASE Code
WHEN 'Health' THEN 1
WHEN 'Phone' THEN 2
WHEN 'Freeze' THEN 3
WHEN 'Hot' THEN 4
END
(MySQL에 대해 잘 모르지만 위의 내용은 SQL Server에서 사용할 수 있습니다.MySQL의 구문은 크게 다르지 않습니다.)
이 작업을 자주 수행하려면 테이블에 OrderBy 열을 만들거나 이 테이블에 대한 FK 링크가 있는 OrderBy 테이블을 만들고 해당 테이블에 OrderBy 숫자 필드를 지정합니다.
안녕하세요. 이것은 SQL Server 쿼리입니다. 하지만 MySQL에서도 이 작업을 수행할 수 있다고 확신합니다.
SELECT ID, Code
FROM x
ORDER BY
CASE Code WHEN 'Health' THEN 1
WHEN 'Phone' THEN 2
WHEN 'Freeze' THEN 4
WHEN 'Hot' THEN 5
ELSE 6 END ASC
, Code ASC
커플 옵션:
원하는 숫자의 주문과 함께 주문 코드 열 추가
이 테이블 ID 및 주문 코드에 FK가 있는 테이블 추가
예, 결과를 코드 테이블에 결합한 다음 코드별로 순서를 지정합니다.코드 순서
편집: 코드 테이블 사용 설명 중...
별도의 코드 테이블(CodeId, Code, CodeOrder)을 만들고 이 테이블에 참여하여 코드오더별로 순서를 지정합니다.코드와 주문을 쉽게 변경할 수 있기 때문에 제안된 (케이스...) 해킹으로 주문을 하는 것보다 더 좋습니다.
언급URL : https://stackoverflow.com/questions/1244028/sql-order-by-list-of-strings
'programing' 카테고리의 다른 글
깊이 1의 특정 커밋을 얕은 수준으로 복제하는 방법은 무엇입니까? (0) | 2023.08.29 |
---|---|
jQuery 클릭이 동적으로 생성된 항목에 대해 작동하지 않습니다. (0) | 2023.08.29 |
Associ 및 ftype이 Powershell에서 작동하지 않습니다. (0) | 2023.08.29 |
익명 기능에서 작동하지 않는 lodash 디바운스 (0) | 2023.08.29 |
터치스크린용 jQuery UI 'draggable()' 디바지블을 만들려면 어떻게 해야 합니까? (0) | 2023.08.29 |