반응형
MySQL - 관련성별 주문 방법? INNODB 표
저는 '카드'라고 불리는 INNODB 테이블에 약 20,000개의 행이 있으므로 FULLTEXT는 옵션이 아닙니다.
이 표를 고려해 주시기 바랍니다.
id | name | description
----------------------------------------------------------
1 John Smith Just some dude
2 Ted Johnson Another dude
3 Johnathan Todd This guy too
4 Susan Smith Her too
5 Sam John Bond And him
6 John Smith Same guy as num 1, another record
7 John Adams Last guy, promise
예를 들어, 사용자가 'John'을 검색한다고 하면, 결과 집합은 다음과 같은 순서가 되기를 바랍니다.
7 John Adams
6 John Smith
3 Johnathan Todd
5 Sam John Bond
2 Ted Johnson
저희는 '존 스미스'를 한 번밖에 뽑지 않았으니, 가장 최근에 출품한 작품입니다.제 자료에 의하면, 모든 이름은 같은 사람의 이름이고, 존 스미스라는 두 명의 다른 남자는 걱정할 필요가 없습니다.아이디어?제가 설명할 수 있는 것이 있으면 알려주세요.
버전 1:
SELECT max(id) id, name
FROM cards
WHERE name like '%John%'
GROUP BY name
ORDER BY CASE WHEN name like 'John %' THEN 0
WHEN name like 'John%' THEN 1
WHEN name like '% John%' THEN 2
ELSE 3
END, name
버전 2:
SELECT max(id) id, name
FROM cards
WHERE name like '%John%'
GROUP BY name
ORDER BY CASE WHEN name like 'John%' THEN 0
WHEN name like '% %John% %' THEN 1
WHEN name like '%John' THEN 2
ELSE 3
END, name
언급URL : https://stackoverflow.com/questions/1588710/mysql-how-to-order-by-relevance-innodb-table
반응형
'prosource' 카테고리의 다른 글
MySQL의 부울 값에 대한 TINYINT 대 ENUM(0, 1) (0) | 2023.11.04 |
---|---|
AngularJS 컨트롤러 함수가 호출되지 않음 (0) | 2023.11.04 |
도커 컴포지트로 기존 이미지를 업데이트하는 방법은? (0) | 2023.11.04 |
VBA 없는 셀의 내용을 복사하는 방법선택한다. (0) | 2023.11.04 |
ADO에 대한 엔티티 프레임워크 제공자를 찾을 수 없습니다.불변 이름이 'Oracle'인 NET 공급자입니다.관리되는 데이터 액세스.고객' (0) | 2023.11.04 |