选择每个列值有限制的数据

时间:2015-03-19 13:53:51

标签: mysql select limit

考虑下表:

id int primary_key
user_id int
type enum('type1', 'type2', 'type3')

以实际状态:

id user_id type
1  2       type1
2  2       type1
3  2       type1
4  2       type1
5  2       type2

我想编写一个select,它返回id为1,2,3,5的行; 我想为user_id = 2选择所有行,同时只选择每种类型的最多3行。不会选择id = 4的行,因为它已经找到了3行type1。

一种方法是为每个类型的值创建3个单独的查询,然后创建它们的UNOIN。是否有更好/更有效的方式?

1 个答案:

答案 0 :(得分:0)

试试这个: -

SELECT *
FROM your_table yt
WHERE (SELECT COUNT(*)
       FROM your_table ty
       WHERE ty.type = yt.type
       AND ty.id <= yt.id
      ) <= 3;

我认为这可能会对你有帮助。