我有以下声明:
SELECT DISTINCT COUNT(Z.TITLE) AS COUNT
FROM QMFILES.MPRLRREQDP Y,
QMFILES.MPRLRTYPP Z
WHERE Y.REQUEST_TYPE = Z.ID
AND Y.REQUEST_ID = 13033;
在此特定结果集上,如果我删除了DISTINCT
和COUNT()
,则结果集将返回完整相同数据的九行。如果我添加DISTINCT
,我会得到一行。添加COUNT()
我得到九个结果,我期待一个。我假设操作的顺序正在影响我的结果,但我怎么能解决这个问题,所以我得到了我想要的结果?
注意:这是较大的SQL语句中的子选择。
答案 0 :(得分:15)
SELECT DISTINCT COUNT(Z.TITLE)
计算Z.TITLE
(九)值的行数。 DISTINCT
是多余的,因为COUNT
已经汇总了这些行。
SELECT COUNT(DISTINCT Z.TITLE)
计算Z.TITLE
(一)中不同值的数量。
答案 1 :(得分:3)
COUNT会产生一条新记录,其中包含SELECT语句中的项目数。 DISTINCT正在寻找COUNT的结果,毕竟这只是单个记录。
答案 2 :(得分:0)
如果你真的想要这个标题,那么它应该是
SELECT Z.Title, COUNT(Z.TITLE) AS COUNT
FROM QMFILES.MPRLRREQDP Y,
QMFILES.MPRLRTYPP Z
WHERE Y.REQUEST_TYPE = Z.ID
AND Y.REQUEST_ID = 13033
GROUP BY Z.Title;
这会给你类似的东西
"Title 1", 9
或如果您有多个标题
"Title 1", 6
"Title 2", 2
"Title 3", 1
数字是该不同标题的计数。