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)
只需做一个GROUP BY. 用于HAVING确保名称仅出现一次。用于MIN()选择名称的唯一 ID。
select min(id), name
from tablename
group by name
having count(*) = 1
Run Code Online (Sandbox Code Playgroud)
仅读取该表一次即可提高性能!(并且不要忘记在(名称,id)上创建索引。)