mysql只返回第一行

nuypyhwy  于 2021-07-29  发布在  Java
关注(0)|答案(2)|浏览(425)

我有下表:

  1. students:
  2. name: semester:
  3. AAAA 1
  4. BBBB 2
  5. CCCC 3
  6. DDDD 4

其中students是表的名称,name和semperm是列。
我想选择所有的名字和学期数上限。因此,我使用以下sql语句:

  1. SELECT MAX(semester), name FROM students;

结果我得到了正确的最大学期数,但只有名字。
为什么它只返回一个名称,为什么返回表的第一个名称(而不是最大学期数的名称)?
我不感兴趣的是如何解决这个问题,但为什么它会这样。
我用的是mariadb 10.4.11。

iih3973s

iih3973s1#

它的行为是这样的,因为您使用的是允许错误查询的mysql的旧版本。
为什么查询格式不正确?您的聚合查询没有 GROUP BY ,因此它返回一行。但是, name 不是聚合的——可能数据库中有多个名称。
mysql曾经全心全意地支持这种语法,但是返回一个任意值 name . 现在需要设置一个配置参数才能使用它。

cxfofazt

cxfofazt2#

你必须使用 GROUP BY 将每个名称分组。否则它将聚合整个表,当然只返回一行。

  1. SELECT MAX(semester), name
  2. FROM students
  3. GROUP BY name;

相关问题