我有这个问题:
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
,但仍然收到错误。
任何人都可以帮助我在这里做错了什么?感谢
答案 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
子句中使用别名。