在MySQL查询中,是在GROUP BY之前还是之后应用DISTINCT?

在MySQL查询中,是在GROUP BY之前还是之后应用DISTINCT?,mysql,group-by,distinct,Mysql,Group By,Distinct,下面是我正在运行的查询。不同的是在分组之前还是之后应用的 该表如下所示:id,state id不是唯一的,一个实体可以有许多状态相同或不同的条目 这种行为可能会彻底改变我的结果。如果在分组依据之前应用了DISTINCT,则它将在整个集合中仅对每个实体进行一次计数(仅在一个状态下显示)。如果发生在之后,则每个实体将仅在每个状态中计数一次,但可以在许多状态中计数 SELECT state, COUNT( DISTINCT entity_id ) AS count FROM entit

下面是我正在运行的查询。
不同的
是在
分组之前还是之后应用的

该表如下所示:
id,state

id
不是唯一的,一个实体可以有许多状态相同或不同的条目

这种行为可能会彻底改变我的结果。如果在
分组依据
之前应用了
DISTINCT
,则它将在整个集合中仅对每个
实体
进行一次计数(仅在一个
状态下显示
)。如果发生在之后,则每个
实体
将仅在每个
状态
中计数一次,但可以在许多
状态
中计数

SELECT
    state,
    COUNT( DISTINCT entity_id ) AS count
FROM entities
GROUP BY state
ORDER BY count DESC;

我的目标是每个
状态只对每个实体进行一次计数
,但允许在多个
状态中对
实体进行计数
。。。如果在
groupby
之后应用
DISTINCT
groupby
首先应用

对以下数据使用与问题中相同的查询:

CREATE TABLE Entities (
  state INT,
  id INT
);

INSERT INTO Entities VALUES
  (1, 1), (1, 1), (1, 1),
  (2, 1),
  (3, 1),
  (1, 2),
  (1, 3),
  (2, 3);
输出以下结果:

STATE | COUNT
1     | 3
2     | 2
3     | 1

分组依据
首先发生。要进行分组,数据库可能会根据状态查找合适的索引。这将导致如下结果:

Stat ID
---- --
Iowa 1
Iowa 1
Utah 2
Utah 1
Utah 2
分组完成后,
distinct
发生

Iowa 1
Utah 2
Utah 1
然后跟着伯爵

Iowa count-distinct = 1
Utah count-distinct = 2
然后,
orderbycountdesc
开始生效

Utah 2
Iowa 1

数据库中的同一行永远不会被计数超过一次。即使先运行GROUP BY,该行也永远不会被放入多个组中—只有一个组。您是否有多行具有相同的ID和不同的状态值?
我有多行具有相同的实体和不同的状态。我更新了我的问题以反映这一点。下降实际上是另一种方式。