1

考虑一张桌子

结果 (id, key, value) 其中 key 是主键。

样本数据:

id | key      | value
-----------------------
abc| source-1 | 20
abc| source-2 | 30
abc| source-3 | 2 
abc| source-4 | 10
def| source-5 | 1 
ghi| source-6 | 25
jkl| source-5 | 13

我只想返回给定 id 具有单个条目的那些记录。所以输出应该是

id | key      | value
------------------------
def| source-5 | 1
ghi| source-6 | 25
jkl| source-5 | 13

请指教。

4

1 回答 1

4

一种方法是使用 GROUP BY 和 HAVING 生成具有所需ids 的派生表,然后加入它:

select results.*
from results
join (
    select id
    from results
    group by id
    having count(*) = 1
) as dt on results.id = dt.id

如果您不喜欢派生表,也可以使用 IN:

select *
from results
where id in (
    select id
    from results
    group by id
    having count(*) = 1
)
于 2012-09-27T02:17:10.140 回答