栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

ON子句中的MySQL未知列

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ON子句中的MySQL未知列

不要混合使用ANSI-89样式和ANSI-92样式的连接。它们具有不同的优先级,这可能导致混乱的错误,这就是这里发生的情况。您的查询的解释如下:

FROM property p, (    propertygeometry pg    JOIN shortlist sl ON sl.PropertyID = p.id AND sl.MemberID = 384216    ...)

在上面的示例中,在甚至考虑了逗号样式的连接之前,首先评估使用JOIN关键字的连接。届时该表

p
尚未声明。

从MySQL手册:

但是,逗号运算符的优先级小于INNER JOIN,CROSS JOIN,LEFT
JOIN等。如果在存在联接条件时将逗号联接与其他联接类型混合使用,则可能会出现 “ on子句”中 形式为“ 未知列” col_name”
的错误。本节稍后将提供有关解决此问题的信息。

我建议 始终 使用ANSI-92样式的连接,即使用JOIN关键字:

SELECt p.*,    IF(COUNT(ms.PropertyID) > 0,1,0) AS Contacted,    pm.MediaID,    date_format(p.AvailableFrom, '%d %b %Y') AS 'AvailableFrom',    astext(pg.Geometry) AS GeometryFROM property p    JOIN propertygeometry pg ON p.PropertyGeometryID = pg.id    JOIN shortlist sl ON sl.PropertyID = p.id AND sl.MemberID = 384216    LEFT JOIN message ms ON ms.PropertyID = p.id AND ms.SenderID = 384216    LEFT JOIN property_media pm ON pm.PropertyID = p.id AND pm.IsPrimary = 1WHERe p.paused = 0GROUP BY p.id

有关:

  • 为什么没有比ANSI-89更好地采用SQL ANSI-92标准?


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/398827.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号