2016-07-06 2 views
0

Вот мой стол пример:Как получить Top N записей группы по подстановочные знаки

+--------+-------------+ 
| id  | city_detail | 
+--------+-------------+ 
| 1  | 12_hyd_test | 
| 2  | 13_blr_test | 
| 3  | 15_blr_test | 
| 4  | 18_hyd_test | 
| 5  | 17_coi_test | 
| 6  | 22_coi_test | 
| 7  | 62_hyd_test | 
| 8  | 72_blr_test | 
| 9  | 92_blr_test | 
| 10  | 42_hyd_test | 
| 11  | 21_coi_test | 
| 12  | 82_coi_test | 
+--------+-------+-----+ 

Из этой таблицы, как использовать, как условие с группой по выбрать как этот

+--------+-------------+ 
| id  | city_detail | 
+--------+-------------+ 
| 12  | 82_coi_test | 
| 11  | 21_coi_test | 
| 10  | 42_hyd_test | 
| 7  | 62_hyd_test | 
| 9  | 92_blr_test | 
| 8  | 72_blr_test | 
+--------+-------+-----+ 

В каждом город показать только два результата (%coi% или %hyd% или '%blr%') заказ по идентификатору DESC

+1

Покажите нам свою текущую попытку запроса. – jarlh

+0

Я попробовал этот запрос select id, city_detail из tble_name, где (city_detail как% coi% или ORG_ID, например '% hyd%' ИЛИ ​​city_detail, например '% blr%') order by id desc –

ответ

0

Вероятно, самым простым способом является использование переменных:

select e.* 
from (select e.*, 
      (@rn := if(@c = substr(city_detail, 4), @rn + 1, 
         if(@c := substr(city_detail, 4), 1, 1 
         ) 
      ) as seqnum 
     from example e cross join 
      (select @c := '', @rn := 0) params 
     order by substr(city_detail, 4) 
    ) e 
where rn <= 2; 
Смежные вопросы