Sql 选择“最大值”和另一列
我有这个表,想要得到最大值和id。当我使用select id时,最大值是2,30,但正确的答案是1,30。我真的需要引起你的注意。Sql 选择“最大值”和另一列,sql,Sql,我有这个表,想要得到最大值和id。当我使用select id时,最大值是2,30,但正确的答案是1,30。我真的需要引起你的注意。 非常感谢您可以尝试使用子查询 id value 2 20 1 30 3 15 5 25 select * from tablename where value in (select max(value) from tablename) 使用子查询 select * from tablename where val
非常感谢您可以尝试使用子查询
id value
2 20
1 30
3 15
5 25
select * from tablename
where value in (select max(value) from tablename)
使用子查询
select * from tablename
where value in (select max(value) from tablename)
从@Thorsten注释中,我注意到第一个查询将返回最大值的所有关系
或者,如果是mysql,则可以使用order by with limit
select *
from t
where value = (select max(value) from table)
第二个查询将只返回值最高的一行
select *
from table
order by value desc
limit 1
您可以检查此查询。根据您的要求给出结果。请不要在没有使用DBMS标记的情况下询问SQL问题。从您的描述来看,您似乎在使用MySQL,因为select id,来自某个_表的maxvalue是无效的SQL,但MySQL在这种情况下默认在id上应用任何_值,因此,只需抓取一些不相关的ID。将SQL模式设置为仅_FULL_GROUP_BY,以避免这种不希望出现的行为。如果将第4,30行添加到上述示例数据中,预期结果是什么?在该表中,不可能在相同的值中将ID加倍。感谢you@made阿尔塔玛:不过,这两个查询之间有区别。第一个为您提供共享最大值的所有行。第二种方法只是从具有最高值的行中任意选取一行。因此,请决定在出现关系的情况下希望看到什么结果。这应该是value=,因为子查询不能返回多个值。
SELECT *
FROM `tablename`
WHERE value=(SELECT
MAX(value) as value
FROM tablename)
SELECT top 1 id,max(value) FROM table
GROUP BY id
ORDER BY max(value) desc