SQL 选择行,其中列值是唯一的(仅出现一次)

Ols*_*ard 3 sql google-bigquery

给定表

| id | Name |
| 01 | Bob  |
| 02 | Chad |
| 03 | Bob  |
| 04 | Tim  |
| 05 | Bob  |
Run Code Online (Sandbox Code Playgroud)

我想从名称唯一的行中选择名称和 ID(仅出现一次)

这本质上与如何从表中选择列的唯一值?,但请注意,作者不需要 id,因此可以通过以下方式解决该问题GROUP BY name HAVING COUNT(name) = 1

但是,我需要提取整行(可能是数十或数百列),包括 id, where COUNT(name) = 1,但我不能GROUP BY id, name,因为它们的每个组合都是唯一的。

编辑:

我正在使用 Google BigQuery。

预期成绩:

| id | Name |
| 02 | Chad |
| 04 | Tim  |
Run Code Online (Sandbox Code Playgroud)

jar*_*rlh 6

只需做一个GROUP BY. 用于HAVING确保名称仅出现一次。用于MIN()选择名称的唯一 ID。

select min(id), name
from tablename
group by name
having count(*) = 1
Run Code Online (Sandbox Code Playgroud)

仅读取该表一次即可提高性能!(并且不要忘记在(名称,id)上创建索引。)