选择所有具有预定义数量的不同值的行

yacmzcpb  于 2021-06-19  发布在  Mysql
关注(0)|答案(2)|浏览(330)

我有一个 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
aiazj4mn

aiazj4mn1#

您可以在派生表中获得前3个唯一的收藏夹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
a5g8bdjr

a5g8bdjr2#

如果说“前三个”,你指的是排序出现的前三个 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 ,那么madhur的解决方案是好的。

相关问题