Есть ли способ сортировки по частоте появления значения? Если значение появляется в нескольких строках, мы бы просто использовали предложение WHERE
? Нужно ли сделать запрос более конкретным?
В качестве простого примера:
CREATE TABLE mytable
( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY
, val VARCHAR(15) NOT NULL
);
INSERT INTO mytable (id, val) VALUES
(1,'one')
,(2,'prime')
,(3,'prime')
,(4,'square')
,(5,'prime')
,(6,'six')
,(7,'prime')
,(8,'cube')
,(9,'square')
;
Мы можем написать простой запрос для возврата строк
SELECT t.val
, t.id
FROM mytable t
ORDER BY t.val
Но какой запрос мы используем для получения наиболее часто встречающихся значений, перечисленных первыми? Чтобы вернуть результат, подобный этому:
freq val id
---- ------ --
4 prime 2
4 prime 3
4 prime 5
4 prime 7
2 square 4
2 square 9
1 cube 8
1 one 1
1 six 6
где freq
- частота (количество строк), в которой значение отображается в столбце val
. Значение 'prime' появляется в четырех строках, поэтому freq
имеет значение 4.
Какой запрос MySQL SELECT я бы использовал, чтобы вернуть такой результат?