Sql 表别名--字段列表中的未知列
我有一个sql查询,它在两个表上执行左连接,其中一些列是不明确的。我可以为连接的表添加前缀,但当我尝试在from子句中为表中的一列添加前缀时,它会告诉我未知列。我甚至试着给那张表一个别名,像这样…从点到点,用p作为表的前缀,但这也不起作用。我做错了什么?我的问题是:Sql 表别名--字段列表中的未知列,sql,mysql,Sql,Mysql,我有一个sql查询,它在两个表上执行左连接,其中一些列是不明确的。我可以为连接的表添加前缀,但当我尝试在from子句中为表中的一列添加前缀时,它会告诉我未知列。我甚至试着给那张表一个别名,像这样…从点到点,用p作为表的前缀,但这也不起作用。我做错了什么?我的问题是: SELECT point_title, point_url, address, city, state, zip_code, phone, `points`.`lat`, `points`.`longi`, featur
SELECT point_title, point_url, address, city, state, zip_code,
phone, `points`.`lat`, `points`.`longi`, featured,
kmlno, image_url, category.title, category_id,
point_id, lat, longi, reviews.star_points, reviews.review_id,
count(reviews.point_id) as totals
FROM (SELECT *,
( 3959 * acos( cos( radians('37.7717185') ) * cos( radians( lat ) )
* cos( radians( longi ) - radians('-122.4438929') )
+ sin( radians('37.7717185') ) * sin( radians( lat ) ) ) ) AS distance
FROM points
HAVING distance < '25') as distResults
LEFT JOIN category USING ( category_id )
LEFT JOIN reviews USING ( point_id )
WHERE (point_title LIKE '%Playgrounds%' OR category.title LIKE '%Playgrounds%')
GROUP BY point_id
ORDER BY totals DESC, distance
LIMIT 0, 10
以下是所涉及表的架构:
积分表:
字段类型空默认注释
点11号
点\标题varchar255号
类别识别号int11号
说明文字编号
点url varchar255号
地址:varchar255号
城市瓦查尔255号
州varchar255号
邮政编码varchar255号
电话号码
文件名varchar255否
lat varchar25号
朗吉瓦查25号
用户id int2 No.0
特色国际1号0
国际1号
kmlno int2第0号
lastupdate varchar255号
图像\u url varchar255号
审查表:
字段类型空默认注释
审查id int11号
复习int1第0课
审查标题varchar255号
审查说明文本编号
星点int11第0位
用户id int11否0
点11号
lat varchar25号
朗吉瓦查25号
lastupdate varchar255号
状态varchar1 No r
类别表:
字段类型空默认注释
类别识别号int11号
标题varchar255号
说明文字编号
文件名varchar255否
图像\u名称varchar255号
状态int1 No.0
lastupdate varchar255 No如果没有看到您的模式,很难确定问题出在哪里。但我确实看到了一个问题-将距离小于25的选项从内部选择移动到外部选择。距离名称对于内部选择不可用。我也改变了必须去哪里,因为没有分组
SELECT point_title, point_url, address, city, state, zip_code,
phone, `points`.`lat`, `points`.`longi`, featured,
kmlno, image_url, category.title, category_id,
point_id, lat, longi, reviews.star_points, reviews.review_id,
count(reviews.point_id) as totals
FROM (SELECT * FROM (SELECT *,
( 3959 * acos( cos( radians('37.7717185') ) * cos( radians( lat ) )
* cos( radians( longi ) - radians('-122.4438929') ) +
sin( radians('37.7717185') ) * sin( radians( lat ) ) ) ) AS distance
FROM points) AS distResultsInner
WHERE distance<25)) AS distResults
LEFT JOIN category USING ( category_id )
LEFT JOIN reviews USING ( point_id )
WHERE (point_title LIKE '%Playgrounds%'
OR category.title LIKE '%Playgrounds%')
GROUP BY point_id ORDER BY totals DESC, distance
LIMIT 0 , 10
哪个专栏给了你这个问题?你能把你的查询格式化以便能读出来吗?我想出来了。我不需要在lat和longi列前面加上“points”,而需要在前面加上“DistrisUlts”,因为这是正在使用的表别名。谢谢大家的帮助。好的,谢谢,但是我在上面的查询中遇到了这个错误:1064-你的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以了解在第11行使用“AS distResults LEFT JOIN category USING category_id LEFT JOIN reviews U”的正确语法