Eggyals ソリューションに似ていますが、関心のある行を戻すだけです。テストされていないため、タイプミスがある場合はご容赦ください:-
SELECT Sub2.*
FROM (SELECT MAX(
CASE WHEN Location = 'ABC' THEN 1 ELSE 0 END +
CASE WHEN Price BETWEEN 1000000 AND 5000000 THEN 1 ELSE 0 END +
CASE WHEN Bedrooms BETWEEN 5 AND 12 THEN 1 ELSE 0 END +
CASE WHEN State = 'XYZ' THEN 1 ELSE 0 END +
CASE WHEN County = 'PQR' THEN 1 ELSE 0 END +
CASE WHEN Category = 'MNO' THEN 1 ELSE 0 END) AS MatchCount
FROM my_table a
WHERE (Location = 'ABC')
OR (Price BETWEEN 1000000 AND 5000000)
OR (Bedrooms BETWEEN 5 AND 12)
OR (State = 'XYZ')
OR (County = 'PQR')
OR (Category = 'MNO'))Sub1
INNER JOIN (SELECT a.*,
CASE WHEN Location = 'ABC' THEN 1 ELSE 0 END +
CASE WHEN Price BETWEEN 1000000 AND 5000000 THEN 1 ELSE 0 END +
CASE WHEN Bedrooms BETWEEN 5 AND 12 THEN 1 ELSE 0 END +
CASE WHEN State = 'XYZ' THEN 1 ELSE 0 END +
CASE WHEN County = 'PQR' THEN 1 ELSE 0 END +
CASE WHEN Category = 'MNO' THEN 1 ELSE 0 END AS MatchCount
FROM my_table a
WHERE (Location = 'ABC')
OR (Price BETWEEN 1000000 AND 5000000)
OR (Bedrooms BETWEEN 5 AND 12)
OR (State = 'XYZ')
OR (County = 'PQR')
OR (Category = 'MNO')) Sub2
ON Sub1.MatchCount = Sub2.MatchCount