Выделить все строки с заранее определенным количеством различных значений - PullRequest
0 голосов
/ 18 ноября 2018

У меня есть таблица User со следующими строками

id: 1, favorite_id: 1
id: 2, favorite_id: 2
id: 3, favorite_id: 2
id: 4, favorite_id: 3
id: 5, favorite_id: 3
id: 6, favorite_id: 3
id: 7, favorite_id: 4
id: 8, favorite_id: 4
id: 9, favorite_id: 4

И ищет запрос, который возвращает первые 3 отдельных строки favorite_id s =>

id: 1, favorite_id: 1
id: 2, favorite_id: 2
id: 3, favorite_id: 2
id: 4, favorite_id: 3
id: 5, favorite_id: 3
id: 6, favorite_id: 3

Ответы [ 2 ]

0 голосов
/ 18 ноября 2018

Если под «первыми тремя» вы подразумеваете первые три, которые появляются под порядком id, то

select u.*
from (select u.favorite_id, min(id) as min_id
      from users u
      group by u.favorite_id
      order by min_id asc
      limit 3
     ) f3 join
     users u
     on f3.favorite_id = u.favorite_id;

Если вы просто имеете в виду три самых низких значения favorite_id, то решение Мадхурав порядке.

0 голосов
/ 18 ноября 2018
  • Вы можете получить первые 3 уникальных значения fav_id в Производная таблица
  • Присоедините это к основной таблице, чтобы получить все соответствующие строки.

Попробуйте:

SELECT t.*
FROM `User` t
JOIN (SELECT DISTINCT favorite_id 
      FROM `User`
      ORDER BY favorite_id LIMIT 3) AS dt
    ON dt.favorite_id = t.favorite_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...