MySQL - select top records

Should be simple.

Mydb database . One of the columns is mydata.

What SELECT query is needed to select the top 3 arising results from mydata strong> but sorted alphabetically?

For example, if my data is as follows:

mydata
======
kilo (x 1 occurrence)
lima (x 9 occurrences)
golf (x 5 occurrences)
echo (x 9 occurrences)
zulu (x 8 occurrences)

How can I make him return "echo, lima, zulu", which are among the top three most commonly found entries sorted alphabetically? Thank!

EDIT: just to add, they have to be different. Thank!

+3
source share
3 answers

, , .

SELECT mydata
FROM (
    SELECT mydata
    FROM mytable
    GROUP BY mydata
    ORDER BY COUNT(mydata) DESC
    LIMIT 3
) AS T1
ORDER BY mydata

:

'echo'
'lima'
'zulu'

:

CREATE TABLE mytable (mydata VARCHAR(100) NOT NULL);
INSERT INTO mytable (mydata) VALUES
    ('kilo'),
    ('lima'), ('lima'), ('lima'), ('lima'), ('lima'), ('lima'), ('lima'), ('lima'), ('lima'),
    ('golf'), ('golf'), ('golf'), ('golf'), ('golf'),
    ('echo'), ('echo'), ('echo'), ('echo'), ('echo'), ('echo'), ('echo'), ('echo'), ('echo'),
    ('zulu'), ('zulu'), ('zulu'), ('zulu'), ('zulu'), ('zulu'), ('zulu'), ('zulu');
+2
SELECT mydata 
FROM mytable 
GROUP BY mydata 
ORDER BY count(id), mydata

,

0
SELECT mydata
FROM mytable
GROUP BY mydata
ORDER BY COUNT(mydata) DESC, mydata
LIMIT 3
0
source

Source: https://habr.com/ru/post/1739684/


All Articles