변수 비교 지점 세트를 기반으로 MySQL 레코드 검색
-
13-09-2019 - |
문제
MySQL 테이블이 있다고 가정 해 봅시다. people
. 각 레코드는 다양한 속성으로 구성되며,이 중에서도 favourite_colour
, country
, 그리고 age_group
.
내가하고 싶은 것은 특정 매개 변수 세트와 유사 하게이 테이블에서 레코드를 검색하는 것입니다. 예를 들어 "Red", "United States"및 "18-25"가 주어지면 가장 좋은 결과는 세 가지 모두와 일치하는 레코드입니다. 이것들은 100% 일치입니다.
그러나 두 매개 변수의 조합 (66% 일치) 또는 하나의 매개 변수 (33% 일치)와 일치하는 레코드를 검색하고 싶습니다. 또한 추가 비교 지점을 정의하고 싶습니다 (예 : underwear_type
, marital_status
, 등.).
이 문제에 대한 비교적 효율적인 해결책이 있습니까?
해결책
예, 다음과 같은 각 비교를 바꿀 수 있습니다. favourite_colour='Red'
빌CAST( (favourite_colour='Red') AS INTEGER)
&씨; 그럼, 당신 SUM
이 모든 것, 즉
SELECT
userId,
SUM( (favourite_colour='Red'),
(country='US'),
(age_group='18-25') ) AS match_score
FROM people
WHERE match_score >= 2
ORDER BY match_score DESC
다음에 완벽한 일치를 제공합니다. 더 많은 수표로 쉽게 일반화 할 수 있습니다!-)
다른 팁
세 가지 첫 번째는 쉽습니다.
select * from people
where
(case when color = 'Red' then 33 else 0 end +
case when age_group = '18-25' then 33 else 0 end +
case when country = 'United States' then 33 else 0 end)>=33
"비교의 추가 점"부분을 이해하지 못합니다. 설명해 주시겠습니까?
제휴하지 않습니다 StackOverflow