Mysql 选择所有年龄最大的人?

Mysql 选择所有年龄最大的人?,mysql,sql,max,Mysql,Sql,Max,我想从本例中具有最大特定值的行(最早的成员)中获取值 Select * from members where age=max(age) 这样行吗 如果有超过1名年龄相同的老年会员,会发生什么 我不必担心,因为我使用自动增量,但我只是好奇而已 谢谢。不用了 你想要 Select * from Members where Age = (Select Max(Age) from Members) 如您提到的autoincrement所示,如果您正在表中查找最后插入的ID,则需要 Selec

我想从本例中具有最大特定值的行(最早的成员)中获取值

Select * from members where age=max(age)
这样行吗

如果有超过1名年龄相同的老年会员,会发生什么

我不必担心,因为我使用自动增量,但我只是好奇而已

谢谢。不用了

你想要

 Select * from Members 
 where Age = (Select Max(Age) from Members)
如您提到的autoincrement所示,如果您正在表中查找最后插入的ID,则需要

 Select LAST_INSERT_ID()

这将不起作用,因为这是组功能的无效使用,最好使用“从成员中选择*按年龄顺序描述限制1”

如果有多个成员具有相同的最大年龄,您将得到多个结果。要仅从中选择一个,请执行以下操作:

select * 
from members 
where age = (select max(age) as max_age from members);
limit 1

如果您喜欢任何特定数据而不是随机数据,则可以选择添加订单。

这将只返回一行-即使多个成员具有相同的最大年龄:

SELECT *
FROM members
ORDER BY age DESC
LIMIT 1 ;
这和@podiluska的回答将返回所有这些:

SELECT m.*
FROM members AS m
  JOIN
    ( SELECT MAX(age) AS max_age
      FROM members
    ) AS allm
    ON allm.max_age = m.age ;

还有一种更为人为的方法:

SELECT * FROM members m
WHERE NOT EXISTS (
    SELECT 1 FROM members m2
    WHERE m1.age < m2.age )

此查询可移植到大多数数据库,适用于自动增加的PKs,也适用于多个年龄相同的人。另外,至少在SQL Server中,大多数情况下都会比使用子查询的版本快,特别是当[members]在[age]列上有索引时。如果使用GROUP BY和@变量查找和存储最小/最大值,并在末尾筛选匹配项,则可以使用单个SELECT语句来完成

假设表成员至少有两列:id和age,那么可以使用如下语句:

SELECT id, age, @max:= IF(@max > age, @max, age) FROM members GROUP BY id HAVING(age = @max);


表名区分大小写。@vearutop:这取决于设置。是否使用随年龄自动递增?
SELECT id, age, @max:= IF(@max > age, @max, age) FROM members GROUP BY id HAVING(age = @max);
SELECT id, age, @min:= IF(@min < age, @min, age) FROM members GROUP BY id HAVING(age = @min);