Как сформировать SQL (для MySQL) запрос по нахождению наиболее похожего профиля с множеством полей-флагов?
Можно предложить такое решение:
select * 
from users
order by ((flag1=1)*1 + (flag2=0)*1 + (flag3=1)*1 +(flag4=0)*1) desc
;

MariaDB fiddle

При сортировке используем сравнение параметров с желаемым профилем. При необходимости можно использовать различные коэффициенты для различных параметров
Велосипед, конечно же, уже придуман, и называется расстояние Хэмминга. Только ваши флаги нужно представить в виде битовой строки.

https://stackoverflow.com/questions/4777070/hammin...