Die MySQL-Maximalwert-Abfrageanweisung lautet: Gruppieren Sie zuerst das Stuname-Feld und berechnen Sie dann den Maximalwert in jeder Gruppe.
【Verwandte Lernempfehlung: MySQL-Tutorial(Video)】
MySQL-Abfrage-Maximalwertanweisung ist:
1, Methode. 1
rrreeIn dieser Erklärung in, Wir gruppieren das Stuname-Feld und verwenden dann die Funktion MAX(), um den Maximalwert in jeder Gruppe zu berechnen.
2. Methode 2: Verbindung verwenden
SELECT a.stuname,MAX(a.score) AS score FROM stuscore a GROUP BY a.`stuname` ;
In der zweiten SQL-Anweisung verwenden wir stuname als Beurteilungsbedingung, um die beiden Tabellen zu verbinden. Wenn wir nur
SELECT a.stuname,a.score AS score FROM stuscore a JOIN stuscore b ON a.`stuname`=b.`stuname` GROUP BY a.`score` HAVING a.`score`=MAX(b.`score`);
stuscore b ON a.stuname=b.stuname
ausführen, erhalten wir die folgende Ergebnismenge: stuscore b ON a.stuname=b.stuname
我们会得到下面的结果集:
之所以会得到这个结果集,是因为在连接时,左表中的每条记录都会根据连接条件ON a.stuname=b.stuname
“和右表中的每条记录进行匹配,这就是为什么会出现重复记录的原因。这个有点像编程语言中的“双重循环”。
然后再加分组和分组条件GROUP BY a.score HAVING a.score=MAX(b.score)
,就可以得到每个学生中的最大分数;
其实GROUP BY a.`score ` HAVING a.`score`=MAX(b.`score`)
这个分组条件一开始我也是有点不大理解,就是说我是根据score字段进行分组的,但这里的MAX()函数为什么就可以计算出每个学生中的最大分数,我们知道第一种方法比较好理解就是对每个学生的姓名分组,然后用MAX()
函数计算出其中的最大值,这是肯定的,但第二方法是对score字段进行分组的。在这里我觉得原因应该是,在将两个表进行连接时,连接条件a.stuname=b.stuname
已经对这些记录根据学生姓名进行分组了,所以MAX(b.score)
Eigentlich GROUP BY a.`score ` HAVING a.`score`=MAX(b.`score`)Ich habe diese Gruppierungsbedingung zunächst nicht ganz verstanden, das heißt, ich habe nach der Punktzahl gruppiert Aber warum kann die Funktion MAX() hier die maximale Punktzahl für jeden Schüler berechnen? Wir wissen, dass die erste Methode einfacher zu verstehen ist, nämlich die Gruppierung der Namen jedes Schülers und die Verwendung vonDer Grund, warum Sie diese Ergebnismenge erhalten, liegt darin, dass beim Verbinden jeder Eintrag in der linken Tabelle angezeigt wird Die Datensätze werden mit jedem Datensatz in der rechten Tabelle gemäß der Verbindungsbedingung „
ON a.stuname=b.stuname
“ abgeglichen, weshalb doppelte Datensätze angezeigt werden. Dies ist ein bisschen wie „“ in a Programmiersprache Doppelschleife". Dann fügen Sie Gruppierungs- und Gruppierungsbedingungen hinzuGROUP BY a.score HAVING a.score=MAX(b.score)
, Sie können die maximale Punktzahl jedes Schülers erhalten;
MAX()?
Die Funktion berechnet den Maximalwert, was sicher ist, aber die zweite Methode besteht darin, das Punktefeld zu gruppieren. Ich denke, der Grund sollte darin liegen, dass beim Verbinden der beiden Tabellen die Verbindungsbedingung a =b.stuname
hat diese Datensätze nach Schülernamen gruppiert, sodass MAX(b.score)
die maximale Punktzahl für jeden Schüler berechnen kann 🎜🎜🎜 Um mehr über das Programmieren zu erfahren Achten Sie auf die Spalte „PHP-Training“ 🎜🎜🎜Das obige ist der detaillierte Inhalt vonWas ist die Maximalwertanweisung in einer MySQL-Abfrage?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!