Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.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 给出奇怪结果的sql查询_Mysql_Database - Fatal编程技术网

Mysql 给出奇怪结果的sql查询

Mysql 给出奇怪结果的sql查询,mysql,database,Mysql,Database,为什么这个查询会给出奇怪的结果 SELECT max(greatest(home_team_total,away_team_total)) AS max_team_score, id FROM `match` WHERE id IN (1,2,3,4,5) 当 SELECT greatest(home_team_total,away_team_total) AS max_team_score, id FROM `match` WHERE id IN (1,2,3,4,5) ORDER BY

为什么这个查询会给出奇怪的结果

SELECT max(greatest(home_team_total,away_team_total)) AS max_team_score, id 
FROM `match`
WHERE id IN (1,2,3,4,5)

SELECT greatest(home_team_total,away_team_total) AS max_team_score, id 
FROM `match`
WHERE id IN (1,2,3,4,5)
ORDER BY max_team_score DESC
LIMIT 1
给出正确的结果


最大值仅在两种情况下正确,但匹配id在第一种情况下错误。

这是因为您在SELECT子句中包含了
id
字段。你想要哪个身份证?我知道您可能想要一个与max行关联的行,但可能有多个,如果您也返回
min(最大值(主队总数,客队总数))

第二个查询就是您要用于此问题的查询

编辑以使其更加清晰:

您的查询相当于:

SELECT max(greatest(home_team_total,away_team_total)) AS max_team_score, ANY(id)
FROM `match`
WHERE id IN (1,2,3,4,5)


它说:“服务器可以从每个组中自由选择任何值,因此,除非它们相同,否则选择的值是不确定的。”

如果您确实希望第一个查询工作,则必须将其更改为以下内容:

选择最大(主队、客队)作为最大队得分,id 从
匹配
最伟大的地方(主队、客队)= ( 从
match
)


请注意,结果中可以有多行,因此我更喜欢此解决方案,而不是“限制1”备选方案。

正如我在问题中提到的,我需要匹配表中对应于最大分数的行的id。我永远不需要最小值。这次没有多行。即使有多行,它也可以返回任何一行。我只需要它作为统计数据。我得到了你想要的,但是假装我在扮演服务器的角色。它不知道这些问题的答案。整个问题是为什么第一个查询是错误的…从技术上讲??因为如果我不知道原因,我会在以后的某一天遇到类似问题的麻烦..不。您需要使用类似FIRST_VALUE()的分析函数,这在MySQL中是不可用的。因此,使用第二个查询。有一些技巧你可以假装让它工作,但它的方式更先进和非直观。首先..Y???第二,如果有不止一个结果会有什么问题……不管怎样,我只想要一个结果……让它成为任何一个结果吧……想想当比赛以平局结束时的情况。你会让获奖者分享领奖台上的位置,而不是只给一个获奖者颁奖。但是,如果您的解决方案只显示其中一行,那么您可以使用之前发布的查询,或者在此查询中添加限制1(或者使用第一个结果并通过应用程序放弃其余结果)。