programing

SQL은 A열에 대한 결과를 먼저 표시한 후 B열에 대한 결과를 표시합니다.

newsource 2022. 12. 6. 22:01

SQL은 A열에 대한 결과를 먼저 표시한 후 B열에 대한 결과를 표시합니다.

SQL에서 열의 결과를 표시/순서 지정name그 후 첫 번째에 대한 결과를 표시합니다.description컬럼의 마지막입니다.

현재 SQL 쿼리:

SELECT * FROM products WHERE (name LIKE '%$search_query%' OR description LIKE '%$search_query%') 

추가해 보았다order by name, description [ASC|DESC]안 먹혔어요.

검색 결과를 최적화하기 위한 것입니다.에서 특정 단어가 발견되었을 경우description또한 특정 단어가 검색될 경우 마지막이 될 수 있습니다.name기둥.

를 사용할 수 있습니다.CASE의 성명ORDER BY이름을 우선시합니다.다음 예에서는 이름이 일치하는 모든 결과가 먼저 표시됩니다.CASE스테이트먼트는 1로 평가되지만 다른 모든 결과는 2로 평가됩니다.

당신의 문제 설명으로는 정확히 어떤 행동을 원하는지 모르겠지만, 이 기술을 사용하여 결과를 우선시하는 보다 정교한 케이스를 만들 수 있습니다.

SELECT * 
FROM products 
WHERE (name LIKE '%$search_query%' OR description LIKE '%$search_query%') 
ORDER BY CASE WHEN name LIKE '%$search_query%' THEN 1 ELSE 2 END

이름을 먼저 알고 싶다면 가장 간단한 건order by다음과 같습니다.

order by (name like '%$search_query%') desc

MySQL은 부란을 숫자 컨텍스트의 숫자로 처리합니다. "1"은 true, "0"은 false입니다.

이것은 문서화되어 있지 않지만, 다음과 같이 조합된 결과가UNION ALLUNION ALL은 결과 세트 하단에 새로운 결과를 추가하기 때문에 나중에 정렬되지 않고 반환된 순서대로 유지됩니다.이것으로 충분합니다.

SELECT * FROM products
WHERE name LIKE '%$search_query%' 
UNION ALL
SELECT * FROM products
WHERE (description LIKE '%$search_query%' AND name NOT LIKE '%$search_query%') 

언급URL : https://stackoverflow.com/questions/55007043/sql-show-results-for-a-column-first-then-show-results-for-b-column