У меня есть следующая таблица под названием "table3"
+------+
| name |
+------+
| aaa |
| aaa |
| aaa |
| aaa |
| aaa |
| aaa |
| bbb |
| bbb |
| bbb |
| bbb |
| ccc |
| ccc |
| ccc |
| ccc |
| ccc |
| ccc |
| ccc |
| ccc |
| ccc |
+------+
когда я получил количество для каждого имени, я получил
mysql>select name,count(name) as count from table3 group by name order by name;
+------+-------+
| name | count |
+------+-------+
| aaa | 6 |
| bbb | 4 |
| ccc | 9 |
+------+-------+
поэтому я выполнил следующий запрос, чтобы вернуть имена и максимальное количество чистых для них
mysql> select name from (select name,count(name) as count from table3 group by name order by name) as tbl where tbl.count=(select max(count) from tbl);
ожидаем следующий результат
+------+
| name |
+------+
| ccc |
+------+
но я получаю эту ошибку
ERROR 1146 (42S02): Table 'tests.tbl' doesn't exist
Я сделал псевдоним правильно, но псевдоним таблицы "tbl" не идентифицирован в части ".....unt=(select max(count) from tbl)"
тогда я тоже использовал эти запросы
mysql> select name from (select name,count(name) as count from table3 group by name order by name) as tbl where tbl.count=(select max(count) from tbl) as tb1;
mysql> select name from (select name,count(name) as count from table3 group by name order by name) as tbl where tbl.count=((select max(count) from tbl) as tb1); //extra couple of parenthesis
они также дают некоторые различные ошибки. Ничего не удалось
Как решить эту проблему, не производя другую таблицу из исходной таблицы (таблица 3)
Вы можете использовать limit
:
select name
from t
group by name
order by count(*) desc
limit 1;
Если могут быть связи, и вы хотите, чтобы в этом случае были все значения, используйте rank()
:
select name
from (select name, count(*) as cnt,
rank() over (order by count(*) desc) as seqnum
from t
group by name
) n
where seqnum = 1;
Извините, я не получил вторую часть вашего ответа раньше. Спасибо