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);