2013-02-11 51 views
1

我开始学习通过Java程序连接到数据库。我有一张名为City的表格,其中只包含两列:CityName和Population。我想找到最高的人口,然后将该人口与相应城市的名称一起给出。如何从Java数据库打印MAX和描述

我知道如何得到的只是最高的人口(见下面,我知道可能是不理想,但至少为我工作):

  double max = 0.0; 
      String sqlStatement = "SELECT MAX(Population) FROM City"; 
      ResultSet result = stmt.executeQuery(sqlStatement); 
      if (result.next()) 
      { 
        highest = result.getDouble(1); 
      } 
      System.out.printf("Highest population: %,.0f", highest); 

我敢肯定,得到最高人口加上相应的城市的名字,我的sql语句应该EB改为:

"SELECT CityName, MAX(Population) FROM City GROUP BY CityName";

但我不能让它超出了工作。我以为我可以像

String highestCity = result.getString(2)

添加的东西,然后添加highestCity到System.out.printf输出线,但不工作。

任何人都可以帮忙吗?

谢谢!

+1

你想拥有人口最多的城市? – davidbuzatto 2013-02-11 03:04:24

+0

我想给最大的人口(实际人数)和人口最多的城市的名称。感谢所有的答复,将测试一些并回复。 – 2013-02-11 03:24:10

回答

5

这个怎么样?

String sqlStatement = "SELECT CityName, Population FROM City WHERE Population IN (SELECT MAX(Population) FROM City)"; 
+0

对不起,你完全正确!我的错。我将DBMS的错误结果视为正确的。我已经投票删除我的答案,因为它是不正确的。 – davidbuzatto 2013-02-11 03:29:29

+0

这工作。谢谢! – 2013-02-11 03:34:49

+0

如果你使用'='和'IN',会更好。 – Perception 2013-02-11 03:37:49

3

你想根据总体降序排序你的结果,并限制你的查询只返回一个结果。例如:

SELECT * FROM city ORDER BY population DESC LIMIT 1; 
+1

这不包括如果不止一个城市有价值=最大人口 – 2013-02-11 03:09:03

+0

@ iswanto-san你是对的。 – 2013-02-11 03:11:54