加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 数据库 > MsSql > 正文

sql – 了解Oracle别名 – 除非在第二个查询中包含,否则为什么查询中不能识别别名?

发布时间:2020-05-24 12:41:12 所属栏目:MsSql 来源:互联网
导读:我有一个查询 SELECT COUNT(*) AS CNT, imeiFROM devices 执行得很好.我想用WHERE语句进一步限制查询. (人性)逻辑下一步是随后修改查询: SELECT COUNT(*) AS CNT, imeiFROM devicesWHERE CNT 1 但是,这会导致错误消息ORA-00904:“CNT”:标识

我有一个查询

SELECT COUNT(*) AS "CNT",imei
FROM   devices

执行得很好.我想用WHERE语句进一步限制查询. (人性)逻辑下一步是随后修改查询:

SELECT COUNT(*) AS "CNT",imei
FROM   devices
WHERE  CNT > 1

但是,这会导致错误消息ORA-00904:“CNT”:标识符无效.出于某种原因,将查询包装在另一个查询中会产生所需的结果:

SELECT *
FROM   (SELECT COUNT(*) AS "CNT",imei
        FROM   devices
        GROUP  BY imei)
WHERE  CNT > 1

为什么Oracle在第二个查询中无法识别别名“CNT”?

解决方法

简单的答案是AS子句定义了在结果中调用列的内容,这是与查询本身不同的范围.

在您的示例中,使用HAVING子句最有效:

SELECT COUNT(*) AS "CNT",imei
FROM   devices
GROUP  BY imei
HAVING COUNT(*) > 1

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读