반응형
FIELD('d', 'a', 'b', 'c', 'd', 'e', 'f')
'd'가 첫 번째 다음 네 번째 인수이기 때문에 4를 반환합니다.
이 기능은 매우 특정한 순서에 따라 쿼리 결과를 정렬하는 기능을 제공합니다. 현재 신청의 경우 관리해야하는 4 가지 상태 (활성, 승인, 거부 및 제출)가 있습니다. 하지만 상태 란으로 간단히 주문하면 제출 및 승인 된 항목보다 거부 및 활성 상태 항목이 더 중요하기 때문에 결과 목록의 유용성이 떨어집니다.
MySQL에서는 다음과 같이 할 수 있습니다.
SELECT <stuff> FROM <table> WHERE <conditions> ORDER BY FIELD(status, 'rejected', 'active','submitted', 'approved')
결과는 거부 된 항목이 먼저, 활성 항목이 순서대로 정렬됩니다. 따라서 결과는 방문자의 중요성 수준을 낮추는 순서로 정렬되었습니다.
상태에 대한이 중요도 수준을 열거하는 별도의 테이블을 만든 다음 내림차순으로 쿼리를 정렬 할 수 있지만 MS SQL Server로 전환 한 후 몇 번이나 나타났기 때문에 다음 사항에 대해 문의 할 것이라고 생각했습니다. MySQL의 FIELD ()와 유사한 내장 함수를 사용하여 추가 테이블과 다소 복잡한 쿼리를 피할 수 있는지 여부.
감사합니다.
데이비드 키스
해결 방법
ORDER BY CASE status
WHEN 'active' THEN 1
WHEN 'approved' THEN 2
WHEN 'rejected' THEN 3
WHEN 'submitted' THEN 4
ELSE 5
END
보다 복잡한 평가 (조합 포함 또는 LIKE를 사용해야하는 경우)에이 구문을 사용할 수 있습니다.
ORDER BY CASE
WHEN status LIKE 'active' THEN 1
WHEN status LIKE 'approved' THEN 2
WHEN status LIKE 'rejected' THEN 3
WHEN status LIKE 'submitted' THEN 4
ELSE 5
END
참조 페이지 https://stackoverflow.com/questions/3892406
반응형
'MySql' 카테고리의 다른 글
MySQL Python 용 MySQLDB API에서 num_rows () 함수를 어떻게 사용합니까? (0) | 2020.11.04 |
---|---|
MySQL database.table에서 username @ '%'에 삭제 권한 부여; (0) | 2020.11.04 |
MySQL의 'unsigned'는 무엇을 의미하며 언제 사용해야합니까? (0) | 2020.11.03 |
MySQL SBT Scala 프로젝트에서 MySQL JDBC 드라이버를 사용하는 방법은 무엇입니까? (0) | 2020.11.03 |
MySQL "너무 많은 데이터베이스 연결"의 원인 (0) | 2020.11.03 |
댓글