レーベンシュタインはおそらく遅いですが、可能です
チェックする値ごとに 1 つのクエリを実行し、MIN lenvenshtein 距離を取得します。2 つのクエリの UNION ALL を実行し、それをサブクエリとして使用して人物と最小距離の合計を選択し、その値で降順に並べ替えます。
編集
テーブルを再設計できると仮定すると
3つのテーブルがあります:-
専門家
ID名の表...
資格の表
Id QualificationName
LinkTable
ProfessionalId QualificationId
次に、資格のレーベンシュタイン距離のサブセレクトを行うクエリを実行します (これは、個人の資格ごとではなく、資格ごとにのみ実行することを意味する必要があります):-
SELECT Name, SUM(Relevancy) AS SumRelevancy
FROM
(
SELECT a.Name, MIN(c.Relevancy) AS Relevancy
FROM Professionals a
INNER JOIN LinkTable b ON a.Id = b.ProfessionalId
INNER JOIN
(
SELECT QualificationId, LEVENSHTEIN('CA', QualificationName) AS Relevancy FROM Qualifications
) c ON b.QualificationId = c.QualificationId
GROUP BY a.Name
UNION ALL
SELECT a.Name, MIN(c.Relevancy) AS Relevancy
FROM Professionals a
INNER JOIN LinkTable b ON a.Id = b.ProfessionalId
INNER JOIN
(
SELECT QualificationId, LEVENSHTEIN('BA', QualificationName) AS Relevancy FROM Qualifications
) c ON b.QualificationId = c.QualificationId
GROUP BY a.Name
) Sub1
GROUP BY Name
ORDER BY SumRelevancy