мне даже нужно GROUP BY, если я выбираю MAX (some_column) в sqlite? - PullRequest
0 голосов
/ 23 января 2020

Я выполняю и оптимизирую некоторые SQL запросы.

В моем БД следующие два запроса возвращают одну и ту же вещь, но я не уверен, что что-то не вижу. Если я использую MAX (one_of_my_columns), кажется, что я возвращаю 1 строку (что я и хочу) независимо от того, использую я GROUP BY или нет. Являются ли они одинаковыми:

SELECT someThing, someNum, anotherNum, MAX(installDate)
FROM someTable 
WHERE someThing= '123' 
    AND '2018' >= installDate 
    GROUP BY someUniqueID HAVING isEnabled

и (один без группировки по)

SELECT someThing, someNum, anotherNum, MAX(installDate)
FROM someTable 
WHERE someThing = '123' 
    AND '2018' >= installDate 
    AND isEnabled

также «isEnabled» - это столбец с 1 или 0 .. Я считаю, что это работает как предназначен для обоих (только возвращать, если 1)

РЕДАКТИРОВАТЬ: сделал "someUniqueID", someThing ... это не уникально и будет иметь дубликаты. РЕДАКТИРОВАТЬ 2: Я имел в виду, что он возвращает одну строку.

1 Ответ

0 голосов
/ 23 января 2020

спасибо Шону в комментариях: https://www.sqlite.org/quirks.html#aggregate_queries_can_contain_non_aggregate_result_columns_that_are_not_in_the_group_by_clause

это, кажется, подводит итог. Это одно и то же.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...