SQL - 由于where子句中的Unknown列而无法调整别名

时间:2015-07-13 21:47:17

标签: mysql sql

我得到了以下查询,但是当我执行它时出现错误 - #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%'

2 个答案:

答案 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

或者,您可以使用子查询,但我不建议使用。