Левое соединение бесполезно. Поскольку у вас есть условие для subscriber_data в предложении WHERE, этот подзапрос не будет возвращать те строки, для которых нет соответствующих subscriber_data, поэтому он эффективно работает, как если бы вы использовали INNER JOIN. Вы должны добавить это условие в условие левого соединения, но в этом макете запроса это невозможно. Значения из внешнего запроса не допускаются в условиях соединения во внутреннем запросе.
Вы можете изменить его, но, очевидно, вам нужно объединить три таблицы, где средняя таблица subscriber_data, которая связывает их все вместе, является необязательной. Это на самом деле не имеет смысла.
Или, может быть, customfields - это необязательная таблица, но в этом случае вы должны были перевернуть таблицу или использовать RIGHT JOIN.
В заключение, я думаю, вы хотели написать это:
select
s.emailaddress,
GROUPCONCAT(IFNULL(f.fieldid, '') SEPARATOR '","')
from
list_subscribers s
inner join subscribers_data d on d.subscriberid = s.subscriberid
left join customfields f on f.fieldid = d.fieldid
where
d.fieldid in (2,4,12,13,14,15,17,19,20,21,22,23,16,26,27)
group by
s.emailaddress
Или вы хотите перечислить идентификаторы полей, которые заполнены для подписчика (ей)? В этом случае это будет:
select
s.emailaddress,
GROUPCONCAT(IFNULL(d.fieldid, '') SEPARATOR '","')
from
list_subscribers s
cross join customfields f
left join subscribers_data d on
d.subscriberid = s.subscriberid and
d.fieldid = f.fieldid
where
f.fieldid in (2,4,12,13,14,15,17,19,20,21,22,23,16,26,27)
group by
s.emailaddress