2014-09-19 89 views
0

我有這個疑問:SQL錯誤:在LIKE列WHERE子句

SELECT `donations`.*, `contacts`.`first_name` AS contact_first_name, `contacts`.`last_name` AS 
    contact_last_name 
FROM (`donations`) 
LEFT OUTER JOIN `contacts` contacts ON `contacts`.`id` = 
    `donations`.`contact_id` 
WHERE 
`contact_first_name` LIKE 
    '%test%' 

但是我得到錯誤Unknow column contact_first_name in WHERE clause。我看到我正在選擇名字作爲別名contact_first_name,但仍然出現錯誤。

任何人都可以幫助我在這裏做什麼錯?由於

回答

1

用這個代替:

SELECT `donations`.*, `contacts`.`first_name` AS contact_first_name, `contacts`.`last_name` AS 
    contact_last_name 
FROM (`donations`) 
LEFT OUTER JOIN `contacts` contacts ON `contacts`.`id` = 
    `donations`.`contact_id` 
WHERE 
`contacts`.`first_name` LIKE 
    '%test%' 

這樣做的原因是因爲contacts.first_name AS contact_first_name正在最後的檢查結果,因此WHERE不知道的別名contact_first_name 或者你可以這樣做:

SELECT * 
FROM (
    SELECT `donations`.*, `contacts`.`first_name` AS contact_first_name, `contacts`.`last_name` AS 
      contact_last_name 
    FROM (`donations`) 
     LEFT OUTER JOIN `contacts` contacts ON `contacts`.`id` = 
    `donations`.`contact_id`  
) a 
WHERE `contact_first_name` LIKE '%test%' 
1

變化

WHERE 
    `contact_first_name` LIKE 
    '%test%' 

WHERE 
    `contacts`.`first_name` LIKE 
    '%test%' 

這樣做的原因是,你不能WHERE子句中使用別名。