Вам следует серьезно подумать о нормализации вашей модели данных и хранении каждого из двух имен в отдельных столбцах.При этом вы можете обойти эту проблему, используя SUBSTRING_INDEX
:
SELECT
CONCAT(
LEAST(SUBSTRING_INDEX(Pair, '-', 1), SUBSTRING_INDEX(Pair, '-', -1)),
'-',
GREATEST(SUBSTRING_INDEX(Pair, '-', 1), SUBSTRING_INDEX(Pair, '-', -1))) AS Pair,
COUNT(*) AS cnt
FROM yourTable
GROUP BY
LEAST(SUBSTRING_INDEX(Pair, '-', 1), SUBSTRING_INDEX(Pair, '-', -1)),
GREATEST(SUBSTRING_INDEX(Pair, '-', 1), SUBSTRING_INDEX(Pair, '-', -1))
ORDER BY
cnt DESC;
Если ваша таблица выглядит следующим образом:
Id | Name1 | Name2
1 | Anna | Bob
2 | Anna | Charlie
3 | Bob | Dan
4 | Bob | Anna
5 | Charlie | Anna
Тогда запрос можно немного упростить:
SELECT
CONCAT(LEAST(Name1, Name2), '-', GREATEST(Name1, Name2)) AS Pair,
COUNT(*) AS cnt
FROM yourTable
GROUP BY
LEAST(Name1, Name2),
GREATEST(Name1, Name2);