DISTINCT
просматривает всю запись , а не только столбец сразу после нее.Чтобы выполнить то, что вы хотите, вам нужно использовать GROUP BY
:
нерабочий код:
SELECT
site_id,
deal_woot.*,
site.woot_off,
site.name AS site_name
FROM deal_woot
INNER JOIN site ON site.id = site_id
WHERE site_id IN (2, 3, 4, 5, 6)
GROUP BY site_id
Почему это не работает?Если вы GROUP BY
столбец, вы должны использовать статистическую функцию (например, MIN
или MAX
) для остальных столбцов - в противном случае, если для данного site_id
есть несколько site_woot_off
с,SQL не ясно, какое из этих значений вы хотите SELECT
.
Возможно, вам придется расширить deal_woot.*
, чтобы перечислить каждое из его полей.
Примечание: если вы используете MySQL, я считаю, что технически необязательно указывать статистическую функцию для оставшихся столбцов.Если вы не указываете статистическую функцию для столбца, она выбирает для вас значение одного столбца (обычно первое значение в наборе результатов).