Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.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 server 在SQL server中查找最大值并显示不同字段中的相应值_Sql Server_Max - Fatal编程技术网

Sql server 在SQL server中查找最大值并显示不同字段中的相应值

Sql server 在SQL server中查找最大值并显示不同字段中的相应值,sql-server,max,Sql Server,Max,我有一个关于城市的数据表,其中包括城市名称、人口和其他与我的问题无关的领域 ID Name Population 1 A 45667 2 B 123456 3 C 3005 4 D 13769 查找最大人口是基本的,但我需要一个结果表,该表在一列中包含最大人口,在另一列中包含相应城市的名称 Population Name 123456

我有一个关于城市的数据表,其中包括城市名称、人口和其他与我的问题无关的领域

ID      Name    Population
1       A       45667   
2       B       123456  
3       C       3005    
4       D       13769   
查找最大人口是基本的,但我需要一个结果表,该表在一列中包含最大人口,在另一列中包含相应城市的名称

Population      Name    
123456          B       

我已经看过了所有的问题,但由于某种原因,答案看起来太复杂了。有没有一种方法可以将查询写在1行或2行中

有几种方法可以做到这一点:

WHERE
子句中的过滤器:

select id, name, population
from yourtable
where population in (select max(population)
                     from yourtable)
或子查询:

select id, name, population
from yourtable t1
inner join
(
  select max(population) MaxPop
  from yourtable
) t2
  on t1.population = t2.maxpop;
或者您可以使用带领带的
TOP
。如果没有领带,则可以使用领带移除
。这将包括具有相同填充值的任何行:

select top 1 with ties id, name, population
from yourtable
order by population desc
由于您使用的是SQL Server,因此还可以使用排名函数来获得结果:

select id, name, population
from
(
  select id, name, population,
    row_number() over(order by population desc) rn
  from yourtable
) src
where rn = 1
看吧


作为排名函数的补充说明,您可能希望使用
densite\u rank()
而不是
row\u number()
。如果你有多个城市拥有相同的人口,你会得到两个城市的名字。(请参阅)

在给定(最大)人口的情况下,可以有多个城市。您可以接受多记录结果吗?该表是美国城市的真实数据,因此没有重复数据。我想您不知道墨菲定律:-)@HDunn不客气,我想向您展示几个工作版本。:)“订货人……描述限制1”是一个简单而好的主意,有时不会让人想起:)