Если «Pro Email» — это поле подтверждения (флажок), то установка параметра field_value запроса в true сработает.
Поскольку ваша цель — просто проверить, установлено ли поле, эта версия запроса, вероятно, подойдёт вам лучше. Она убирает параметр field_value и проверяет, что именованное поле установлено, используя условие (ucf.value = '') IS NOT TRUE. Это вернёт false для любых пользователей, не установивших поле, а также для тех, кто установил поле, но затем удалил заданное значение:
--[params]
-- string :field_name
-- string :group_name
WITH ucf_name AS(
SELECT
CONCAT('user_field_', id) AS name
FROM user_fields
WHERE name = :field_name
),
excluded_users AS (
SELECT
gu.user_id
FROM group_users gu
JOIN groups g
ON g.id = gu.group_id
WHERE g.name = :group_name
)
SELECT
u.id AS user_id
FROM users u
JOIN user_custom_fields ucf
ON ucf.user_id = u.id
WHERE ucf.name = (SELECT name FROM ucf_name)
AND (ucf.value = '') IS NOT TRUE
AND u.id NOT IN (SELECT user_id FROM excluded_users)
Если вы хотите, чтобы запрос возвращал значение поля, измените финальный оператор SELECT следующим образом:
SELECT
u.id AS user_id,
ucf.value
FROM users u
JOIN user_custom_fields ucf
ON ucf.user_id = u.id
WHERE ucf.name = (SELECT name FROM ucf_name)
AND (ucf.value = '') IS NOT TRUE
AND u.id NOT IN (SELECT user_id FROM excluded_users)