반응형
Mysql: 좋아요?
키워드1, 키워드2, 키워드3을 사용하여 검색을 수행한다고 가정합니다.
데이터베이스에 "이름" 열이 있는 레코드가 있습니다.
1: John Do2: Samuel Do3: 존 스미스애나 스미스
이제 쿼리:
SELECT * FROM users WHERE (name LIKE "%John%" OR name LIKE "%Doe%")
1,2,3(이 순서대로) 레코드를 선택합니다만, 예를 들어 키워드로 주문하고 싶습니다.keyword1=John, keyword2=Doe
그래서 키워드별로 나열해야 합니다: 1,3,2 ("John"을 검색한 후 "Doe" 검색을 수행하고 싶기 때문입니다)
생각하고 있었습니다.SELECT DISTINCT FROM (...... UNION .....)
그러나 다른 방법으로 주문하는 것이 훨씬 쉬워질 것입니다(실제 쿼리는 정말 깁니다).
그런 질서를 만드는 요령이 있습니까?
order by case
when name LIKE "%John%" then 1
when name LIKE "%Doe%" then 2
else 3
end
RedFilter의 답변을 기반으로 두 키워드가 모두 있는 행을 맨 위에 배치할 수 있습니다.
order by case
when (name LIKE "%John%" and name LIKE "%Doe%") then 1
when name LIKE "%John%" then 2
when name LIKE "%Doe%" then 3
end
주문할 수 있는 Boolean Fulltext Searchs에 대해 읽어 보십시오.
SELECT *
from
(
SELECT u.*, 1 OrderNum
FROM users
WHERE (name LIKE "%John%")
UNION
SELECT u.*, 2 OrderNum
FROM users
WHERE (name LIKE "%Doe%")
)
Order by OrderNum
나의 예는 모든 것을 주문할 것입니다.John
가 알파벳 순으로 뒤를 잇고 있습니다.Doe
의.
ORDER BY CASE
WHEN name LIKE "John%Doe" THEN CONCAT('a',name)
WHEN name LIKE "John%" THEN CONCAT('b',name)
WHEN name LIKE "%Doe" THEN CONCAT('c',name)
ELSE name
END
언급URL : https://stackoverflow.com/questions/3609166/mysql-order-by-like
반응형
'programing' 카테고리의 다른 글
C의 매크로 범위? (0) | 2023.10.22 |
---|---|
Laravel에서 Wordpress Database로 인증 사용자 (0) | 2023.10.22 |
net:: 노드-웹킷에서 ajax 요청을 하는 동안 ERR_INSECUR_RESPENCE (0) | 2023.10.22 |
모든 데이터 프레임 문자 열을 인자로 변환 (0) | 2023.10.22 |
문자열의 처음이나 끝에서 공백을 모두 제거하는 방법은 무엇입니까? (0) | 2023.10.22 |