mySQL 查询 - 使用 GROUP 和 HAVING 的唯一值

mySQL query - unique value using GROUP and HAVING

这是我的示例数据:

id  name      source
--------------------------
1   aaa       source1
2   bbb       source1
3   ccc       source1
4   ddd       source1
5   aaa       source2
6   bbb       source2
3   ccc       source2
4   ddd       source2
7   eee       source2

我正在尝试查询“name”的值只出现一次(唯一)的所有记录 - 因此所需的输出将是:

id  name      source
--------------------------
7   eee       source2

我试过 GROUP BY nameHAVING 的组合,但没用

SELECT name, source, COUNT(*) AS total FROM data
GROUP BY name
HAVING total=1

有什么想法吗?

PS: 我如何过滤“来源”? WHERE source = "source2" 无济于事..

您需要将源添加到分组依据或将其从 select 中删除或将其放入聚合函数中,否则会引发错误。

您的查询有效,但 FULL_GROUP_By

所有不在 select 中的列都需要一个 aggregation function

CREATE TABLE data (
  `id` INTEGER,
  `name` VARCHAR(3),
  `source` VARCHAR(7)
);

INSERT INTO data
  (`id`, `name`, `source`)
VALUES
  ('1', 'aaa', 'source1'),
  ('2', 'bbb', 'source1'),
  ('3', 'ccc', 'source1'),
  ('4', 'ddd', 'source1'),
  ('5', 'aaa', 'source2'),
  ('6', 'bbb', 'source2'),
  ('3', 'ccc', 'source2'),
  ('4', 'ddd', 'source2'),
  ('7', 'eee', 'source2');
SELECT name, MIN(source), COUNT(*) AS total FROM data
GROUP BY name
HAVING total=1
name | MIN(source) | total
:--- | :---------- | ----:
eee  | source2     |     1

db<>fiddle here