当前位置: 首页 > 面试题库 >

每个类别的MySQL限制结果

公冶子安
2023-03-14
问题内容

c_data中的每个项目都在一个类别/部分中。我想限制每个类别显示多少个项目,而不是限制检索到的项目总数。显然,如果在查询中添加“ limit
20”之类的内容,则总共只能获取20个结果,而不是每个类别20个结果。

   SELECT cm.id,
                cm.title AS cmtitle,
                cm.sectionid,
                cm.type AS cmtype,
                cd.id,
                cd.time,
                cd.link,
                cd.title,
                cd.description,
                cd.sectionid AS sectionid
      FROM c_main AS cm
      JOIN c_data AS cd ON cd.sectionid=cm.sectionid
     WHERE cd.sectionid=cm.sectionid 
     ORDER by id ASC

具有类别的字段是“ sectionid”。


问题答案:

MySQL没有任何排名功能,但是您可以使用变量来创建伪行号。

使用:

SELECT x.*
  FROM (SELECT cm.id,
               cm.title AS cmtitle,
               cm.sectionid,
               cm.type AS cmtype,
               cd.id AS cd_id,
               cd.time,
               cd.link,
               cd.title,
               cd.description,
               cd.sectionid AS cd_sectionid,
               CASE
                 WHEN @sectionid != cm.sectionid THEN @rownum := 1 
                 ELSE @rownum := @rownum + 1
               END AS rank,
               @sectionid := cm.sectionid
          FROM C_MAIN cm,
               C_DATA cd,
               (SELECT @rownum := 0, @sectionid := NULL) r
         WHERE cm.sectionid = cd.sectionid
      ORDER BY cm.sectionid) x
 WHERE x.rank <= 20
ORDER BY id


 类似资料:
  • 问题内容: 我有以下查询,该查询创建了一个视图表,该视图显示了商店中最高的销售员,其他信息很少: 上面的查询将仅显示单个商店的销售数据,其原因如上所述。我的桌子上有20家商店。如何更改上面的查询,以便为我提供20家商店的销售数据(即20行)。 问题答案: 根据上一个问题的答案,如果在同一家商店中以相同的总销售额捆绑多个员工,则将退回所有此类员工。

  • 问题内容: 我希望能够为每个菜单返回5个菜单项。我试过这几个脚本,但没有运气。这是桌子 这是我现在所拥有的。我收到以下脚本的错误消息。错误:子查询返回的行数超过1。 任何建议都非常感谢。 问题答案: 您必须为此使用副作用变量

  • 主要内容:指定初始位置,不指定初始位置,LIMIT和OFFSET组合使用当数据表中有上万条数据时,一次性查询出表中的全部数据会降低数据返回的速度,同时给数据库服务器造成很大的压力。这时就可以用  LIMIT 关键字来限制查询结果返回的条数。 LIMIT 是 MySQL 中的一个特殊关键字,用于指定查询结果从哪条记录开始显示,一共显示多少条记录。 LIMIT 关键字有 3 种使用方式,即指定初始位置、不指定初始位置以及与 OFFSET 组合使用。 指定初始位置 LIMI

  • 问题内容: 可以说我有一张叫Gamers的桌子。 玩家 包含列,,。 我有兴趣选择每个游戏中得分最高的球员。 例如, 查询后,我希望获得GamerID 4、5和8的行。执行该操作的查询是什么? 问题答案: 试试这个: 这将输出: 您可以做的另一种选择是创建一个临时表或视图(如果您不喜欢子查询)。 然后: 或视图: 然后:

  • 我们正在努力在AWS上部署我们的产品(目前在本地),并将DynamoDB视为Cassandra的替代品,主要是为了避免与大量Cassandra集群相关的开发成本。 DynamoDB文档表示,每个帐户的表数限制为每个区域256个,但可以通过调用AWS支持来增加。每个帐户的最大限额是多少? 我们的产品被分成不同的逻辑单元,每个这样的单元将有几个表(比如100个)。每个客户可以有几个这样的单元。每个逻辑

  • 问题内容: 我有一个带有表的数据库,看起来像这样: 有数十万条记录。每个可以在7个不同的表之一中,对应于一个表: 我想要一个从每个类别中选择1个随机项目的查询。解决这个问题的最佳方法是什么?我知道使用和用于类似的随机查询,但是我从未做过这样的事情。 问题答案: 此查询以随机顺序返回加入类别的所有项目: 要将每个类别限制为一个类别,请将查询包装在 partial中 : 请注意,当查询同时具有and