You use alias in your query, and this probably causes this error. Here's another question with similar problem.
Subquery field in Like
-
21-06-2022 - |
Frage
I have the following query:
SELECT
(...),
(SELECT us.short FROM url_short us WHERE us.urlId = u.id
ORDER BY us.id DESC LIMIT 1) as short,
(...),
(SELECT f.name FROM `group` f LEFT JOIN group_url fu ON f.id = fu.group_id WHERE
fu.url_id = u.id ORDER BY f.id DESC LIMIT 1) as f_name
FROM (...)
WHERE (...) AND
(u.url LIKE '%ops%'
OR short LIKE '%ops%'
OR u.url_name LIKE '%ops%'
OR f_name LIKE '%ops%')
(...)
However, when I try to use LIKE in short
and f_group
MySQL say me that:
#1054 - Unknown column 'short' in 'where clause'
I already search a lot and found nothing
Lösung 2
Andere Tipps
your where clause does not see the short
alias as it is only introduced through the projection step taking place after the filtering of the result set (which is realized by the outermost WHERE
clause).
try
SELECT *
FROM (
SELECT
(...),
(SELECT us.short FROM url_short us WHERE us.urlId = u.id
ORDER BY us.id DESC LIMIT 1) as short,
(...),
(SELECT f.name FROM `group` f LEFT JOIN group_url fu ON f.id = fu.group_id WHERE
fu.url_id = u.id ORDER BY f.id DESC LIMIT 1) as f_name
FROM (...)
WHERE (...)
) emb
WHERE (emb.url LIKE '%ops%'
OR emb.short LIKE '%ops%'
OR emb.url_name LIKE '%ops%'
OR emb.f_name LIKE '%ops%')
;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow