В чем разница между этими двумя операторами sql (JDB C)? - PullRequest
2 голосов
/ 12 июля 2020

Я хочу получить последний идентификатор в таблице. Сначала я сделал это:

String selectId = "SELECT MAX(id) FROM book_store.cart" ;    
PreparedStatement ps = conn.prepareStatement(selectId);  
rs =  ps.executeQuery();
while(rs.next()){
    autoIncKey = rs.getInt("id");
}

Здесь я получаю ошибку «идентификатор столбца не найден» .

Затем я изменил запрос на этот, который работает:

String selectId = "SELECT id FROM book_store.cart ORDER BY id DESC LIMIT 1";

Мне интересно, почему первый запрос выдает ошибку, а второй - нет, если они возвращают одно и то же значение?

1 Ответ

2 голосов
/ 12 июля 2020

Первый запрос вернет строку с именем столбца MAX(id).

Не самое полезное имя для столбца, поэтому измените запрос, чтобы установить псевдоним для этого столбца, как это

SELECT MAX(id) id FROM book_store.cart

И теперь столбец будет называться id и rs.getInt("id") будет работать

...