我得到了以下查询,但是当我执行它时出现错误 - #1054 - Unknown column 'adress' in 'where clause'
我想知道为什么?当我删除where子句时,它通常显示为一列,不知道它为什么会抛出错误。
SELECT zlec_status.nazwa AS Status,
piorytet.nazwa AS Priorytet,
Concat(koord.imie, ' ', koord.nazwisko) AS `Koordynator`,
Concat(zlec_adresy.miasto, ' - ', zlec_adresy.ulica, ' ',
zlec_adresy.oddzial)
AS `adress`,
zlec_z_dnia,zlec_id,
zlec_nr,
zlec_do,
zlec_ogran,
awizacje,
awizacja_na_dzien,
termin_zamkniecia,
tresc,
uwagi
FROM zlec
INNER JOIN koord
ON zlec.koord = koord.id
INNER JOIN zlec_adresy
ON zlec.zlec_addres = zlec_adresy.id
INNER JOIN piorytet
ON zlec.priorytet = piorytet.id
INNER JOIN zlec_status
ON zlec.status_zlecenia = zlec_status.id
WHERE `adress` LIKE '%Some%'
答案 0 :(得分:2)
您不能在where
子句中使用别名。使用原始连接列
不允许在WHERE子句中引用列别名,因为在执行WHERE子句时可能尚未确定列值。
where Concat(zlec_adresy.miasto, ' - ', zlec_adresy.ulica, ' ',
zlec_adresy.oddzial) LIKE '%Some%'
答案 1 :(得分:2)
您无法在select
子句中为where
子句中的select
中定义的列别名使用having
。你有两个选择。 MySQL扩展了HAVING `adress` LIKE '%Some%'
的使用范围,因此你可以使用它:
Concat(zlec_adresy.miasto, ' - ', zlec_adresy.ulica, ' ',
zlec_adresy.oddzial) LIKE '%Some%'
或者,您可以使用完整的表达式:
if Device.all.where(:device_guid => model.device_id).first == nil
或者,您可以使用子查询,但我不建议使用。