DISTINCT работает глобально, на всех выбранных вами столбцах.Здесь вы получаете пары значений (sp_id, company_name), но отдельные значения каждого столбца могут содержать дубликаты.
При этом крайне обманчиво то, что MySQL авторизует синтаксисSELECT DISTINCT(company_name), sp_id
когда это действительно означает SELECT DISTINCT(company_name, sp_id)
.Кстати, вам вообще не нужны круглые скобки.
Редактировать
На самом деле есть причина, по которой DISTINCT(company_name), sp_id
является допустимым синтаксисом: добавление скобок вокруг выражениявсегда допустимо, хотя это может быть излишне: company_name
- это то же самое, что (company_name)
или даже (((company_name)))
.Следовательно, в действительности этот фрагмент SQL означает: «DISTINCT [имя_компании в скобках], [sp_id]».Скобки присоединяются к имени столбца, а не к ключевому слову DISTINCT, которое, в отличие, например, от имен агрегатных функций, не нуждается в скобках (AVG sp_id
недопустимо, даже если однозначно для читателя, это всегда AVG(sp_id)
.)
Впрочем, вы можете написать SELECT DISTINCT company_name, (sp_id)
или SELECT DISTINCT (company_name), (sp_id)
, это точно так же, как обычный синтаксис без скобок.Помещение списка столбцов в круглые скобки - (company_name, sp_id)
- не является допустимым синтаксисом SQL, однако вы можете ВЫБРАТЬ только «простые» списки столбцов без скобок (средство проверки орфографии формы говорит мне, что это последнее выражение не английское слово, но яв конце концов, сегодня пятница, во второй половине дня).
Поэтому любой движок базы данных должен принять такой запутанный синтаксис: - (