我有一个应用程序,搜索和显示不同机构的用户建议。
每个机构都可以有任意数量的建议。
每个研究所的结果如下:
我一次只想画十张。
问题是,我的查询指的是recommendations,,而不是机构,因此我最终得到了10条建议,而不是10家机构。
是否有办法告诉MySQL,这个限制指的是不同的机构,而实际上仍然是重复的机构(即同一机构的一些建议)?
实际查询的简化版本:
SELECT * FROM institutions
LEFT JOIN recommendations
ON institutions.InstitutionID = recommendations.InstitutionID
WHERE [SOMETHING]
LIMIT 10
提出这个问题的另一种方法是:是否可以使限制子句引用原始的SELECT而不使用联接?
发布于 2012-11-04 10:08:38
对机构设置限制,然后加入:
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中的分页,请使用以下内容:
...
LIMIT 50, 10
这个例子得到了第6页--从第51行开始,到第10行。
注意:来自0
而不是1
的偏移计数。
mysql中的限制语法是LIMIT offset, row_count
。如果没有偏移,那是LIMIT row_count
(我知道.) row_count参数移动!)
您还可以使用其他语法:
...
LIMIT 10 OFFSET 50
我发现后一种语法要容易得多。
发布于 2012-11-04 10:06:23
当您加入时,请与机构进行子查询,并在此设置限制。
SELECT *
FROM nsrecommendation
JOIN (select * from nsserviceplace limit 10) as ten_service_places
WHERE ten_service_places.NSServicePlaceID = nsrecommendation.NSServicePlaceID
AND [something];
发布于 2012-11-04 10:02:16
如果您只想使用mysql查询作为检索数据的方式,您可以尝试一些嵌套查询来获取所需的数据。没有表的结构就不能说明什么。
https://stackoverflow.com/questions/13221273
复制相似问题