【问题标题】:What is mean the condition COUNT(1) = 1 in oracle sqloracle sql中的条件COUNT(1)= 1是什么意思
【发布时间】:2020-12-22 11:34:28
【问题描述】:

我有两个表并写选择:

SELECT A.code, B.account, A.ano 
FROM atable A, dtable B 
where A.ano=B.dno
group by A.code, B.account, A.ano 
having count(1)=1;

如果我添加 count(1)=1 的条件,我没有得到任何结果,为什么?

【问题讨论】:

标签: sql oracle select


【解决方案1】:

查询按GROUP BY 子句中列出的列对数据进行分组。 HAVING 将结果集限制为计数(对于那些分组的列)等于 1 的那些。

如果查询没有返回任何内容,则意味着这些列中至少没有一个组合只有一行。

例如(基于 Scott 的 EMP 表):

SQL> select job, count(*) from emp
  2  group by job;

JOB         COUNT(*)
--------- ----------
CLERK              4
SALESMAN           4
PRESIDENT          1      --> only one person is a president
MANAGER            3
ANALYST            2

您的查询:

SQL> select job
  2  from emp
  3  group by job
  4  having count(*) = 1;

JOB
---------
PRESIDENT        

让我们设置别人当总统:

SQL> update emp set job = 'PRESIDENT' where ename = 'ADAMS';

1 row updated.

查询现在没有返回任何内容(因为有 2 位总统):

SQL> select job
  2  from emp
  3  group by job
  4  having count(*) = 1;

no rows selected

SQL>

截至count(1):没有意义,请改用count(*)

【讨论】:

  • 谢谢,很清楚,现在我明白了
  • @DovileBarkauskaite 。 . .你应该接受答案。
猜你喜欢
  • 2020-12-30
  • 2015-08-07
  • 1970-01-01
  • 2021-12-14
  • 1970-01-01
  • 2011-04-12
  • 2022-12-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多