Я смотрел на какой-то SQL-запрос, который у меня есть в базе данных Access, который я не делал.
Один из SQL-запросов выглядит примерно так:
select column1 from table1 group by column1 having count(*)>1
Цель этого запроса - найти значение в column1
, которое появляется более одного раза. Я могу убедиться, что этот запрос работает правильно и возвращает значение столбца, которое появляется более одного раза.
Однако я не понимаю, почему этот запрос работает. Насколько я понимаю, использование group by
удалит дубликаты полей. Например, если столбец1 имел
column1
apple
mango
mango
Выполнение group by (column1)
приведет к
column1
apple
mango
В этот момент, если мы выполним having count(*)>1
или having count(column1)>1
, он не должен возвращать никакого результата, так как group by уже удалил дублирующее поле. Но ясно, что я не прав, поскольку приведенный выше оператор SQL дает точный результат.
Не могли бы вы сообщить мне проблему в моем понимании?
Редактировать 1:
Помимо принятого ответа, я эта статья, которая касается порядка работы с SQL, действительно помогла мне понять