Mysql 通过非行数的参数设置限制
我有一个应用程序,可以搜索并显示不同机构的用户推荐 每个机构可以有任意数量的建议 每个研究所的结果如下所示:Mysql 通过非行数的参数设置限制,mysql,Mysql,我有一个应用程序,可以搜索并显示不同机构的用户推荐 每个机构可以有任意数量的建议 每个研究所的结果如下所示: 研训所A有6项建议 研训所B有4项建议 等等 我一次只想画十个机构 问题是我的查询是指推荐,而不是指机构,因此我最终得到的是10条推荐,而不是10家机构 有没有一种方法可以告诉MySQL,该限制指的是不同的机构,同时仍然会产生重复的机构(即对同一机构的许多建议) 实际查询的简化版本: SELECT * FROM institutions LEFT JOIN recommendatio
- 研训所A有6项建议
- 研训所B有4项建议
- 等等
SELECT * FROM institutions
LEFT JOIN recommendations
ON institutions.InstitutionID = recommendations.InstitutionID
WHERE [SOMETHING]
LIMIT 10
提出问题的另一种方式是:是否可以使LIMIT子句引用原始SELECT而不使用JOIN?如果您只想使用mysql查询作为检索数据的方式,可以尝试一些嵌套查询来获取所需的数据。如果没有表结构,就说不出什么 如果只想使用mysql查询作为检索数据的方式,可以尝试一些嵌套查询来获取所需的数据。如果没有表结构,就说不出什么 当您加入时,向机构进行子查询并在那里设置限额
SELECT *
FROM nsrecommendation
JOIN (select * from nsserviceplace limit 10) as ten_service_places
WHERE ten_service_places.NSServicePlaceID = nsrecommendation.NSServicePlaceID
AND [something];
当您加入时,与机构进行子查询,并将限额放在那里
SELECT *
FROM nsrecommendation
JOIN (select * from nsserviceplace limit 10) as ten_service_places
WHERE ten_service_places.NSServicePlaceID = nsrecommendation.NSServicePlaceID
AND [something];
限制机构,然后加入:
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 10 OFFSET 50
我发现后一种语法更容易阅读。限制机构,然后从中加入:
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 10 OFFSET 50
我发现后一种语法更容易阅读。您使用的查询准确度是多少?您使用的查询准确度是多少?nsrecommendation而不是nsserviceplace是否应该对其进行限制10,因为他希望为每个机构提供建议?我认为nsserviceplace是机构,nsrecommendation是建议。不应该吗nsrecommendation比nsserviceplace有10个限制,因为他希望为每个机构提供建议?我认为nsserviceplace是机构,而nsrecommendation是建议。谢谢。唯一的问题是获取用于分页的机构总数。我尝试在子查询中放置SQL\u CALC\u FOUND\u行,但得到了一个错误谢谢,但这不是我的问题。我知道如何使用分页。我关心的是,虽然我只检索10行,但我需要知道行的总数,以便在分页中显示正确的页数(总页数/每页页数)。这通常是通过在SELECT关键字后添加SQL\u CALC\u FOUND\u行来完成的,然后通过另一个查询检索总数:SELECT FOUND\u ROWS()作为NUM\u ROWS。但是,在您的解决方案中,这是不可能的,因为子查询已将原始表限制为10,并且将SQL\u CALC\u FOUND\u行添加到子查询将导致错误。唯一的问题是获取用于分页的机构总数。我尝试在子查询中放置SQL\u CALC\u FOUND\u行,但得到了一个错误谢谢,但这不是我的问题。我知道如何使用分页。我关心的是,虽然我只检索10行,但我需要知道行的总数,以便在分页中显示正确的页数(总页数/每页页数)。这通常是通过在SELECT关键字后添加SQL\u CALC\u FOUND\u行来完成的,然后通过另一个查询检索总数:SELECT FOUND\u ROWS()作为NUM\u ROWS。但是,在您的解决方案中,这是不可能的,因为子查询已将原始表限制为10,并且将SQL\u CALC\u FOUND\u行添加到子查询会导致错误