在MySQL中显示MIN()和MAX()值

时间:2015-02-05 13:44:45

标签: mysql sql database select

我有一个名为 cia 的表,有两列:

第1列('名称')包含世界上所有国家/地区的名称。 第2列('area')的大小为m ^ 2。

我想找到最大和最小的国家。要找到我需要输入以下查询的那些:

SELECT Name, MAX(area) FROM cia

我的其他疑问:

SELECT Name, MIN(area) FROM cia

现在显然我可以做到

SELECT MIN(area), MAX(area) FROM cia

然而,我不会得到我的值的相应名称。是否有可能获得这样的输出

国家/地区Fläche

阿富汗|列'area'的最低值

中国|列'区'的最高值

4 个答案:

答案 0 :(得分:5)

这是最小尺寸:

select min(area) from cia;

这是最大值:

select max(area) from cia;

所以:

select * from cia 
where area = (select min(area) from cia)
   or area = (select max(area) from cia)
order by area;

答案 1 :(得分:1)

编辑: 对不起,我的第一个想法是错的。但这很有效。

SELECT Typ = 'MaxValue', * FROM (SELECT TOP 1 Name, area FROM cia ORDER BY area DESC) tmp1
UNION ALL 
SELECT Typ = 'MinValue', * FROM (SELECT TOP 1 Name, area FROM cia ORDER BY area ASC) tmp2

答案 2 :(得分:1)

您可以尝试此查询:

CREATE TABLE area (name varchar(50), area int);

insert into area values ('Italy', 1000);
insert into area values ('China', 10000);
insert into area values ('San Marino', 10);
insert into area values ('Ghana', 3333);

select main.* from area main
where 
not exists(
  SELECT 'MINIMUM'
  FROM area a2
  where a2.area < main.area
  )
or
not exists(
  SELECT 'MAXIMUM'
  FROM area a3
  WHERE a3.area > main.area
  )

按地区desc排序

这样只写两个子查询。其他方式可能与其他DBMS出错(不使用GROUP BY来显示Name)

转到Sql Fiddle

答案 3 :(得分:0)

你显然必须两次击中桌面,但不需要三次点击。

select  case Area when MaxArea then 'Largest' else 'Smallest' end Rating, b.Name as Country, b.Area
from(
    select  Max( Area ) as MaxArea, Min( Area ) as MinArea
    from    Cia a
) S
join    Cia b
    on  b.Area = s.MaxArea
    or  b.Area = s.MinArea;