В моей таблице у меня есть список имен, адресов электронной почты и столбца с именем referrer. Имя пользователя и адрес электронной почты несколько раз вводятся в таблицу для конкурса. В колонке рефералов рассказывается, как участник узнал о конкурсе.Многослойная фильтрация MySQL на основе критериев из одного столбца
Как получить набор записей участников, который показывает, является ли реферер web
и/или email
, но выбрать только одну запись для каждого? Например, участник может быть введен 10 раз под email
и 100 раз под web
. То, что я пытаюсь сделать, это получить только один экземпляр каждой записи.
Это мой текущий запрос:
select * from table_contestants
where referrer IN ('email', 'web') GROUP BY email order by referrer;
Конечно, когда я использую GROUP BY
это только дает мне один экземпляр записи, независимо от нашел ли он иметь email
или web
.
Удаление GROUP BY
даст мне все экземпляры, которые много ...
Как написать запрос, чтобы дать мне одну запись каждого участника, который имеет как email
и web
?
В отсутствие каких-либо агрегационных функций использование предложения GROUP BY просто неуместно. – Strawberry
@Strawberry в «обычном стандарте SQL» вы правы: неагрегатный столбец, не содержащий ссылок в предложении group by, не допускается в предложении select. Но MySQL явно принимает это как расширение. Значение в одном из значений в группе по усмотрению сервера. –