Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 选择“最大值”和另一列_Sql - Fatal编程技术网

Sql 选择“最大值”和另一列

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。当我使用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 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