Я бы сказал, что ваш исходный запрос не возвращал повторяющиеся строки.Он возвратил 3 отдельные строки данных из базы данных, в которую вы включили только колонку с фамилией.Я бы сказал, что ваш вопрос сформулирован неправильно, и, следовательно, почему СУБД функционируют так, как они работают (и я также утверждаю, что это правильно).
Чтобы перевести ваш запрос:
выберите LAST_NAMEот ПОЛЬЗОВАТЕЛЕЙ
на английский, это будет:
"скажи мне фамилию всех пользователей"
Если я пойду в гимназию для старших классов и спросу учителя«используя свой список классов, скажите мне фамилию всех учеников в вашем классе», если бы в классе были братья-близнецы, я бы подумал, что он перечислит их фамилию дважды (или хотя бы задаст вопросвам, если он должен).Он просто пошел бы вниз по списку людей в классе и зачитал их фамилии.
Если бы вы хотели задать вопрос: «Каковы разные фамилии учеников в классе», он быНе перечисляйте дублирующиеся имена.Однако это то, для чего существует ключевое слово «DISTINCT».
Таким образом, запрос будет:
выбрать отдельное LAST_NAME из USERS
И если вас действительно интересует количествоуникальные фамилии на английском языке: «Сколько разных фамилий у учеников в классе» или, используя ваш пример:
выберите количество (отличное LAST_NAME) из USERS
, тогда как: выберите количество(LAST_NAME) от USERS
будет означать по-английски: «Сколько человек в классе имеет фамилию?»