Вы не можете использовать операторы потока управления, такие как IF
, в запросах.
Однако вы можете добиться того, что, по-видимому, хотите сделать, с помощью UNION ALL
двух запросов, один из которых возвращает пустой набор в зависимости от вашего состояния.
SELECT nickname
FROM contacts
WHERE contacts.user_id = 47
AND contacts.contact_id = 69
UNION ALL
SELECT concat(users.firstname, ' ', users.lastname) nickname
FROM users
WHERE users.id = 69
AND NOT EXISTS (SELECT *
FROM contacts
WHERE contacts.user_id = 47
AND contacts.contact_id = 69);
Также не используйте двойные кавычки для строковых литералов. Да, MySQL принимает это, но в стандартных SQL одинарные кавычки предназначены для этой работы. И не повредит привыкнуть к этому и создать более переносимый код.