社区首页 >问答首页 >按行数以外的参数设置限制

按行数以外的参数设置限制
EN

Stack Overflow用户
提问于 2012-11-04 09:57:16
回答 3查看 136关注 0票数 1

我有一个应用程序,搜索和显示不同机构的用户建议。

每个机构都可以有任意数量的建议。

每个研究所的结果如下:

  • Inst A有6项建议
  • inst B有4条建议
  • 等等..。

我一次只想画十张。

问题是,我的查询指的是recommendations,,而不是机构,因此我最终得到了10条建议,而不是10家机构。

是否有办法告诉MySQL,这个限制指的是不同的机构,而实际上仍然是重复的机构(即同一机构的一些建议)?

实际查询的简化版本:

代码语言:javascript
代码运行次数:0
复制
SELECT * FROM institutions
LEFT JOIN recommendations
  ON institutions.InstitutionID = recommendations.InstitutionID
WHERE [SOMETHING]
LIMIT 10

提出这个问题的另一种方法是:是否可以使限制子句引用原始的SELECT而不使用联接?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-04 10:08:38

对机构设置限制,然后加入:

代码语言:javascript
代码运行次数:0
复制
SELECT * FROM (
    select *
    from institutions
    WHERE [SOMETHING about institutions]
    LIMIT 10) x
LEFT JOIN recommendations ON x.InstitutionID =  recommendations.InstitutionID
    AND [SOMETHING about recommendations]

对于mysql中的分页,请使用以下内容:

代码语言:javascript
代码运行次数:0
复制
...
LIMIT 50, 10

这个例子得到了第6页--从第51行开始,到第10行。

注意:来自0而不是1的偏移计数。

mysql中的限制语法LIMIT offset, row_count。如果没有偏移,那是LIMIT row_count (我知道.) row_count参数移动!)

您还可以使用其他语法:

代码语言:javascript
代码运行次数:0
复制
...
LIMIT 10 OFFSET 50

我发现后一种语法要容易得多。

票数 3
EN

Stack Overflow用户

发布于 2012-11-04 10:06:23

当您加入时,请与机构进行子查询,并在此设置限制。

代码语言:javascript
代码运行次数:0
复制
SELECT * 
  FROM nsrecommendation
  JOIN (select * from nsserviceplace limit 10) as ten_service_places
 WHERE ten_service_places.NSServicePlaceID = nsrecommendation.NSServicePlaceID 
   AND [something];
票数 1
EN

Stack Overflow用户

发布于 2012-11-04 10:02:16

如果您只想使用mysql查询作为检索数据的方式,您可以尝试一些嵌套查询来获取所需的数据。没有表的结构就不能说明什么。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13221273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文