sql – 了解Oracle别名 – 除非在第二个查询中包含,否则为什么查
发布时间:2020-12-12 06:46:08 所属栏目: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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容