Вводят значения различных значений в 2 поля

Я пытаюсь найти запрос MySQL, который найдет различные значения в определенном поле, посчитайте количество вхождений этого значения в 2 поля (1_user, 2_user), а затем закажите результаты по счету.

пример db

 + ------ + ----------- + ----------- +
 |  id |  1_user |  2_user |
 + ------ + ----------- + ----------- +
 |  1 |  2 |  1 | 
 |  2 |  3 |  2 | 
 |  3 |  8 |  7 | 
 |  4 |  1 |  8 | 
 |  5 |  2 |  8 |
 |  6 |  3 |  8 |  
 + ------ + ----------- + ----------- +

ожидаемый результат

 количество пользователей
 ----- -----
 8 4
 2 3
 3 2
 1 2

Запрос

 SELECT user, count(*) AS count FROM ( SELECT 1_user AS USER FROM test UNION ALL SELECT 2_user FROM test ) AS all_users GROUP BY user ORDER BY count DESC 

объяснение

Список всех пользователей в первом столбце.

 SELECT 1_user AS USER FROM test 

Объедините их с пользователями из второго столбца.

 UNION ALL SELECT 2_user FROM test 

Трюк здесь – это UNION ALL, который сохраняет повторяющиеся значения.

Остальное легко – выберите нужные результаты из подзапроса:

 SELECT user, count(*) AS count 

агрегировать по пользователю:

 GROUP BY user 

и предписывают заказ:

 ORDER BY count DESC 
 SELECT u, count(u) AS cnt FROM ( SELECT 1_user AS u FROM table UNION ALL SELECT 2_user AS u FROM table ) subquery GROUP BY u ORDER by cnt DESC 

Возьмите 2 запроса:

 SELECT COUNT(*) FROM table GROUP BY 1_user SELECT COUNT(*) FROM table GROUP BY 2_user 

Теперь объедините их:

 SELECT user, SUM(count) FROM ((SELECT 1_user as user FROM table) UNION ALL (SELECT 2_user as user FROM table)) GROUP BY user, ORDER BY count DESC; 

Я думаю, это то, что вы ищете, так как ваш ожидаемый результат не включал 7

 select usr, count(usr) cnt from ( select user_1 usr from users union all select user_2 usr from users ) u where u.usr in (select user_1 from users) group by usr order by count(u.usr) desc