2012-04-30 4 views
-1

У меня есть таблица MySql с двумя столбцами, а именно категория и имя. У меня 4 уникальных значения категории, и в этой таблице тысячи записей. Но все эти записи попадают в одну из четырех категорий, присутствующих в таблице.Получение результатов запроса mysql на основе значения столбца

Теперь, я хочу, чтобы в качестве вывода я должен получить 2 результата каждой категории i.e. 2 результата первой категории, затем 2 результата следующей категории и т. Д.

Возможно ли с помощью одного запроса?

+0

Можете ли вы показать структуру таблицы, некоторые выборочные данные и то, что вы ожидаете. У вас есть ваш вопрос с именем наибольший-n-на-группу, который обычно не является стандартным запросом, так как это итеративный процесс, который может быть выполнен с помощью переменных SQL, но также должен быть ограничен, чтобы вы не проходили всю таблицу того, что может быть миллионы записей ... просто получите AT WORST CASE, записи в течение последнего ... 30 дней или около того. – DRapp

ответ

0
set @num := 0, @cat := ''; 

select category,name 
     @num := if(@cat = category, @num + 1, 1) as row_number, 
     @cat := category as dummy 
from MyTable 
group by cateogry, name 
having row_number <= 2; 
+0

Здесь я собираюсь, но группа использует агрегаты для негрупповых по столбцам ... вы проверили это? Не будет ли он просто захватить первую запись для номера строки через группу (если вы не добавили столбец row_number). Кроме того, по моему вопросу на плакат должен быть ограниченный предел для предотвращения прохождения полного файла. – DRapp

-1

Как насчет этого?

SELECT * FROM your_table WHERE category = 1 LIMIT 2 
UNION 
SELECT * FROM your_table WHERE category = 2 LIMIT 2 
UNION 
SELECT * FROM your_table WHERE category = 3 LIMIT 2 
UNION 
SELECT * FROM your_table WHERE category = 4 LIMIT 2 
Смежные вопросы