Если вы пытаетесь выполнить запрос, подобный следующему (найдите все узлы с хотя бы одним вложением), где вы использовали инструкцию SELECT, чтобы создать новое поле, которое фактически не существует в базе данных, и попробуйте использовать псевдоним для того результата, с которым вы столкнетесь с той же проблемой:
SELECT nodes.*, (SELECT (COUNT(*) FROM attachments
WHERE attachments.nodeid = nodes.id) AS attachmentcount
FROM nodes
WHERE attachmentcount > 0;
Вы получите ошибку "Неизвестный столбец 'attachmentcount' в предложении WHERE".
Решение на самом деле довольно простое - просто замените псевдоним оператором, который создает псевдоним, например:
SELECT nodes.*, (SELECT (COUNT(*) FROM attachments
WHERE attachments.nodeid = nodes.id) AS attachmentcount
FROM nodes
WHERE (SELECT (COUNT(*) FROM attachments WHERE attachments.nodeid = nodes.id) > 0;
Вы все равно получите возвращенный псевдоним, но теперь SQL не должен скрывать неизвестный псевдоним.