Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 通过非行数的参数设置限制_Mysql - Fatal编程技术网

Mysql 通过非行数的参数设置限制

Mysql 通过非行数的参数设置限制,mysql,Mysql,我有一个应用程序,可以搜索并显示不同机构的用户推荐 每个机构可以有任意数量的建议 每个研究所的结果如下所示: 研训所A有6项建议 研训所B有4项建议 等等 我一次只想画十个机构 问题是我的查询是指推荐,而不是指机构,因此我最终得到的是10条推荐,而不是10家机构 有没有一种方法可以告诉MySQL,该限制指的是不同的机构,同时仍然会产生重复的机构(即对同一机构的许多建议) 实际查询的简化版本: SELECT * FROM institutions LEFT JOIN recommendatio

我有一个应用程序,可以搜索并显示不同机构的用户推荐

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

每个研究所的结果如下所示:

  • 研训所A有6项建议
  • 研训所B有4项建议
  • 等等
我一次只想画十个机构

问题是我的查询是指推荐,而不是指机构,因此我最终得到的是10条推荐,而不是10家机构

有没有一种方法可以告诉MySQL,该限制指的是不同的机构,同时仍然会产生重复的机构(即对同一机构的许多建议)

实际查询的简化版本:

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行添加到子查询会导致错误