首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检索唯一记录SQL

检索唯一记录SQL
EN

Stack Overflow用户
提问于 2018-08-02 22:54:50
回答 5查看 65关注 0票数 1

我有一个表的唯一性,如下所示:

代码语言:javascript
运行
复制
ID        DESC      DATE         NUMBER        Amount
100       TEST1     01-01-18     1009674       10.20 
100       TEST2     01-02-18     1009674       245.10
100       TEST3     01-03-18     1009942       156.000  
100       TEST4     02-14-18     00042EX       154.6
100       TEST5     04-15-18     00042EX       25.10
100       TEST6     05-20-18     1011055       1564.0

我想要获取Number字段没有重复或不重复的唯一记录。

预期结果:

代码语言:javascript
运行
复制
ID      DESC      DATE          NUMBER         AMOUNT
100     TEST3     01-03-18      1009942        156.000 
100     TEST6     05-20-18      1011055        1564.0 

我正在使用的查询:

代码语言:javascript
运行
复制
SELECT * FROM UNIQUES 
WHERE NUMBER NOT IN (SELECT NUMBER FROM 
UNIQUES GROUP BY NUMBER HAVING COUNT(NUMBER)=1)

任何帮助或帮助都将不胜感激。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2018-08-02 22:59:39

我觉得你已经很接近了

代码语言:javascript
运行
复制
SELECT * FROM UNIQUES 
WHERE NUMBER IN (SELECT NUMBER FROM 
UNIQUES GROUP BY NUMBER HAVING COUNT(NUMBER)=1)

你想要:

代码语言:javascript
运行
复制
ID      DESC      DATE          NUMBER         AMOUNT
100     TEST3     01-03-18      1009942        156.000 
100     TEST6     05-20-18      1011055        1564.0 

我的回答是:

有几种很好的方法可以做到这一点,我只是根据这个问题采用最简单的方法,只需将其从NOT IN改为IN

票数 3
EN

Stack Overflow用户

发布于 2018-08-02 22:57:21

您可以使用subquery

代码语言:javascript
运行
复制
select u.*
from uniques u
where not exists (select 1 from uniques u1 where u1.number = u.number and u1.desc <> u.desc);
票数 2
EN

Stack Overflow用户

发布于 2018-08-02 23:23:28

我只会使用窗口函数:

代码语言:javascript
运行
复制
select u.*
from (select u.*, count(*) over (partition by number) as cnt
      from uniques u
     ) u
where cnt = 1;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51656616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档