Есть таблица:
-------------------------- id | num
--------------------------
1 | one,two,three
2 | one
3 | three
4 | two
--------------------------
Как из неё выбрать и отсортировать по кол-ву повторений строки, в которых есть 1 или несколько значений num?
Например:
Нужно выбрать из таблицы строки, в которых присутствует значение 1 и/или 2 и отсортировать их по количеству значений, найденных в условии(даже не знаю как по-другому объяснить).
Т.е вывести должно примерно такое:
-------------------------- id | num
--------------------------
1 | one,two,three (ибо тут встречается и one и two)
2 | one
4 | two
--------------------------
Возможно в вашем случае лучше сделать маппинг, а не хранить все через запятую.
Это плохое решение, но может поможет:
SELECT *, COUNT(*) AS count FROM (
SELECT * FROM `table` WHERE `value` LIKE "%one%"
UNION ALL
SELECT * FROM `table` WHERE `value` LIKE "%two%"
) AS t
GROUP BY t.id
ORDER BY count DESC