получить 2 записи из каждой категории построителя запросов доктрины

0

Допустим, у меня есть следующая таблица

-----------------------------
| user_id   | comment       |
-----------------------------
| 2         | thats cool    |
| 2         | awesome       |
| 3         | i hate this   |
| 3         | okay          |
| 6         | this is weird |
| 6         | hello?        |
| 6         | what is it    |
| 9         | how are you   |
| 16        | too slow      |
| 16        | yes           |
| 17        | alrighty      |
-----------------------------

Как вы можете выбрать две строки на user_id? Итак, мои результаты:

-----------------------------
| user_id   | comment       |
-----------------------------
| 2         | awsome        |
| 2         | thats cool    |
| 3         | i hate this   |
| 3         | okey          |
| 6         | this is weird |
| 6         | hello?        |
| 9         | how are you   |
| 16        | too slow      |
| 16        | yes           |
| 17        | alrighty      |
-----------------------------

Возможно ли это с помощью одного эффективного запроса? Или подвыбор необходим?

  • 0
    Это проблема N на группу, которую трудно решить в MySQL.
  • 0
    Смотрите здесь: stackoverflow.com/questions/12113699/…
Теги:
doctrine2

1 ответ

0
SELECT user_id,
       comment
FROM
(
SELECT user_id,
       comment,
       CASE WHEN @user_id = T.user_id THEN 
       @ROW:=@ROW+1
       ELSE
       @ROW:=1
       END ROW,
       @user_id:=T.user_id
FROM 
Table1 T
,(SELECT @ROW=1,@user_id=null) R)
AS T1 WHERE ROW <=2

ВЫХОД

user_id comment
2       thats cool
2       awesome
3       i hate this
3       okay
6       this is weird
6       hello?
9       how are you
16      too slow
16      yes
17      alrighty

Демо-версия

http://sqlfiddle.com/#!9/c31356/4

  • 0
    Как я могу использовать этот запрос в построителе Doctrine?
  • 0
    Хитрость здесь в том, как сделать это из Doctrine PHP, а не из сырого MySQL. Я не уверен, что можно было бы выполнить ваш запрос в Doctrine.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню