Почему дублированные результаты возвращаются даже при использовании отдельного ключевого слова? - PullRequest
0 голосов
/ 04 марта 2019

Когда я запускаю следующий запрос, мне возвращаются две записи с дублирующимися результатами.Почему повторяющиеся результаты возвращаются, когда я использую отличные здесь?Первичными ключами являются номер дома, название улицы и номер объекта.

SELECT distinct
  house_num,
  Street_name,
  Unit_Designator,
  Unit_Num
FROM voterinfo.voter_info
WHERE house_num = 420 
  AND street_name = "PARK"
  AND Unit_Num = '' 
  AND Unit_Designator = '';

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Для полей с типом данных как Char или аналогичным (Street_name, Unit_Designator) возможно, что в редакторе запросов есть пробелы, которые нельзя удалить, применяя соответствующую логику обрезки. Пожалуйста, обратитесь к ссылке ниже,

MySQL выбирает поля, содержащие начальные или конечные пробелы

0 голосов
/ 04 марта 2019

select distinct - это оператор, который гарантирует, что в результирующем наборе нет повторяющихся строк .То есть он отфильтровывает строки, в которых все столбцы одинаковы (а NULL значения считаются равными).

Он не просматривает подмножество столбцов.

Иногда люди используютselect distinct и не понимаю, что это относится ко всем столбцам.Довольно забавно, когда первый столбец заключен в скобки - как будто скобки имеют значение (они этого не делают).

Тогда у вас также могут возникнуть ситуации, когда значения выглядят одинаково, но это не так.

Рассмотрим этот простой пример, где значения отличаются только пробелом в качестве конца строки:

select distinct x
from (select 'a' as x union all
      select 'a '
     ) y;

Здесь - это скрипта db <> с этим примером.

Возвращает две строки, а не 1.

Без примеров данных трудно сказать, на какую из этих ситуаций вы ссылаетесь.Но строки, которые вы считаете «идентичными», на самом деле не совпадают.

...