Как извлекать строки в порядке убывания по отображаемому номеру?

#php #mysql #sql #descendant

#php #mysql #sql #потомок

Вопрос:

Я спрашиваю, есть ли возможность упорядочить результаты по порядку потомков по количеству отображений строк, пример для пояснения: вот моя таблица:

 foo
foo1
foo
foo
foo1
foo2
  

вот мой результат после вызова запроса (который я не могу угадать):

 foo 
foo 
foo 
foo1
foo1
foo2
  

потому что foo появляется 3 раза, затем foo1, который появляется 2 раза, а затем foo2 появляется всего 1 раз.

Итак, как выглядит используемый запрос?

Я буду признателен за любую поддержку! С уважением!

Ответ №1:

 select t1.col from
table as t1 inner join (
select col,count(col) as num
from table 
group by col) as t2
on t1.col = t2.col
order by t2.num desc
  

Комментарии:

1. Эта часть запроса «выберите col, посчитайте (col) как num из группы таблиц по col» выдает вам каждое отдельное значение и его количество вхождений (попробуйте запустить его, чтобы увидеть результат). Поскольку вам нужны все отдельные записи, вам нужно выполнить соединение между вашей таблицей и запросом, который я написал вам выше. Наконец, вы сортируете результат в порядке убывания по количеству вхождений, которые вы нашли с помощью этого запроса.

2. @nick rulez, ваш первый запрос выполнил цель (без ‘join’), отлично для вас! огромное вам спасибо!

3. потому что на самом деле я хотел показать каждую строку с ее номером появления, как вы это сделали!