MySQL QUERY HAVING子句不使用WHERE子句

时间:2011-08-21 10:12:27

标签: php mysql

我遇到了有条款和where子句我遇到错误的问题:

#1054 - Unknown column 'accommodation' in 'where clause'

以下是代码:

SELECT 
    b.bar_id, b.bar_name, b.bar_image, b.bar_lat, b.bar_lng, 
    b.bar_address, b.bar_phone, b.bar_email, b.bar_open_hours, `category`, 
    ( 6371 * acos( cos( radians(-37.81829) ) * cos( radians( b.bar_lat ) ) * cos( radians( b.bar_lng ) - radians(144.9620) ) + sin( radians(-37.81829) ) * sin( radians( b.bar_lat ) ) ) ) AS distance 
FROM 
    bars b 
WHERE 
    `category` LIKE accommodation 
GROUP BY 
    category 
HAVING 
    distance < 500 
ORDER BY 
    distance

我无法弄清楚为什么我会收到此错误。有没有人有任何建议?

2 个答案:

答案 0 :(得分:1)

你有一个名为accommodation的专栏吗?或者你应该进行字符串比较,在这种情况下它应该是'accommodation'(用单引号括起来)?

你也可以做到这一点

`category` = 'accommodation'

由于字符串中没有任何通配符(%)。

答案 1 :(得分:0)

如果accommodation是一个字符串值,那么你需要用单引号将它包装起来。更好的是,没有必要使用LIKE作为精确的字符串,你可以使用equals代替。

即:

SELECT b.bar_id, b.bar_name, b.bar_image, b.bar_lat, b.bar_lng, b.bar_address, b.bar_phone, b.bar_email, b.bar_open_hours, `category`, ( 6371 * acos( cos( radians(-37.81829) ) * cos( radians( b.bar_lat ) ) * cos( radians( b.bar_lng ) - radians(144.9620) ) + sin( radians(-37.81829) ) * sin( radians( b.bar_lat ) ) ) ) AS distance FROM bars b WHERE `category` = 'accommodation' GROUP BY category HAVING distance < 500 ORDER BY distance