2014-09-19 87 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子句中使用别名。