【问题标题】:How to limit MySQL result according to the values in resultset?如何根据结果集中的值限制 MySQL 结果?
【发布时间】:2020-04-24 03:33:09
【问题描述】:

我正在创建一个 PHP 脚本,用于维护用户信息、注册新用户以及登录到安全页面。为此,我有一个 MySQL 表 user 存储有关用户的所有信息。 User 表有不同的字段,例如 userid、username、usergroup_id、email_hash、country 等。

在我的脚本中,我想从每个 usergroup_id 中获取 10 个用户。
对此的 SQL 查询是什么?

【问题讨论】:

  • 你尝试过什么? stackoverflow.com/questions/3333665/mysql-rank-function 的可能重复项,检查一下。
  • 你的问题不清楚你能分享我关于这个场景的更多信息
  • 在user表中,usergroup_id字段包含1到5的值,是标识用户组的唯一标识符。我只想从用户表中获取每个用户组的 10 个用户。这意味着来自 usergroup_id = 1 的 10 个用户,来自 usergroup_id = 2 的 10 个用户,等等。

标签: mysql sql


【解决方案1】:

您可以使用LIMIT 子句。

例子:

SELECT * FROM `your_table` LIMIT 5, 5 

这将显示记录 6、7、8、9 和 10。

Limit 用于将您的 MySQL 查询结果限制为那些 在规定的范围内。您可以使用它来显示前 X 个 结果,或显示 X - Y 结果的范围。它被表述为限制 X、Y 并包含在查询的末尾。 X 是起点 (记住第一条记录是 0)和 Y 是持续时间(多少 要显示的记录)。

【讨论】:

    【解决方案2】:

    我认为以下方法适用于为每个用户组随机获取 10 个用户:

    select u.*
    from user u
    where u.userid in (select userid
                       from user
                       where u.usergroupid = user.usergroupid
                       limit 10
                      )
    

    这是使用相关子查询将每个用户组的行数限制为 10。

    【讨论】:

      【解决方案3】:

      请试试这个,

      SELECT c.* FROM customers c where c.id in (select c2.id from customers c2 where c.group_id=c2.group_id limit 0, 10)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-29
        • 2010-10-11
        • 2016-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多