【问题标题】:Select data with limit on each column value选择每列值有限制的数据
【发布时间】:2015-03-19 13:53:50
【问题描述】:

考虑下表:

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

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

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

【问题讨论】:

标签: mysql select limit


【解决方案1】:

试试这个:-

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

我想这可能会对你有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-10
    • 2016-11-01
    • 2020-09-26
    • 1970-01-01
    • 2012-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多