SQL-看看则个having

发布于 2016-12-25 07:28:08 字数 315 浏览 1151 评论 1

mysql> select ( case when VM_NC = '' then VM_ZONE when VM_ZONE = '' then VM_NC else concat(VM_NC, '/', VM_ZONE) end ) as queryname from T_APP_CLOUD_DEVICE where queryname = '123';                      
ERROR 1054 (42S22): Unknown column 'queryname' in 'where clause'

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浮生未歇 2017-01-04 11:25:08

where 只能使用表中定义的列或者使用这些列的表达式,所以你第一个SQL本身就是错误的。
having SQL标准要求必须引用GROUP BY子句中的列或用于总计函数中的列,不过也允许使用select中定义的列。也就是说第二个SQL语法上是正确的。

最好还是按照标准的用法避免歧义
where 是对表的查询条件做限制
having 是在汇总后的结果集里再做过滤

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文