SQL:WHERE子句的LIKE列出错

时间:2014-09-19 10:10:03

标签: mysql sql

我有这个问题:

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,但仍然收到错误。

任何人都可以帮助我在这里做错了什么?感谢

2 个答案:

答案 0 :(得分: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 :(得分:1)

更改

WHERE 
  `contact_first_name` LIKE 
    '%test%'

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

原因是你不能在WHERE子句中使用别名。