2013-02-11 3 views
1

Я начинаю узнавать о подключении к базам данных через Java-программы. У меня есть таблица под названием City, которая содержит всего две колонки: CityName и Population. Я хочу найти самое высокое население, а затем дать этому населению наряду с названием соответствующего города.Как распечатать MAX и описание из базы данных Java

Я знаю, как получить только самое высокое население (см следующее, что я знаю, это, вероятно, не идеально, но по крайней мере, работает для меня):

  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 заявление должно Е.Б. изменено на:

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

Но я не могу заставить его работать дальше. Я думал, что я мог бы добавить что-то вроде

String highestCity = result.getString(2)

, а затем добавить highestCity к выходу System.out.printf линии, но это не работает.

Может ли кто-нибудь помочь?

Спасибо!

+1

Вы хотите, чтобы город имел наибольшую численность населения? – davidbuzatto

+0

Я хочу дать наибольшее население (фактическое число) и название города с наибольшим населением. Спасибо за все ответы, проверит некоторых и ответит. –

ответ

5

Как насчет этого?

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

Извините, вы в полном объеме! Виноват. Я принял ошибочный результат своей СУБД как что-то правильное. Я уже голосовал, чтобы удалить свой ответ, поскольку он неверен. – davidbuzatto

+0

Это сработало. Спасибо! –

+0

Было бы лучше, если бы вы использовали '=', vs 'IN'. – Perception

3

Вы хотите отсортировать результаты по популяции по убыванию и ограничить ваш запрос, чтобы вернуть только один результат. Что-то вроде:

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

это не распространяется, если более одного города имеют значение = максимальное население –

+0

@ iswanto-san Вы правы. –

Смежные вопросы