У меня есть таблица SQLite с очень простой структурой:
CREATE TABLE `test` ( `id` INTEGER, `val` TEXT )
Я хочу выбрать только максимальный идентификатор, где val
значение поля равно строке "test_id":
SELECT max(id) AS test_id FROM test WHERE val = "test_id" // (1)
Обратите внимание, что я использую строку " test_id " в WHERE
и test_id в качестве имени пользовательского столбца. Я получаю ошибку:
misuse of aggregate: max(): SELECT max(id) AS test_id FROM test WHERE val = "test_id"
Если я изменю max(id) AS test_id
на max(id) AS test_id2
или WHERE val = "test_id"
на WHERE val = "test_id_something"
- все работает.
В MySQL у меня нет ошибок с оригинальным SELECT (1) . Исправленные версии работают хорошо.
Что я делаю не так? Разве нельзя использовать тот же текст в WHERE
и в качестве имени столбца в SQLite?