首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何避免重复列值

如何避免重复列值
EN

Stack Overflow用户
提问于 2015-12-02 08:13:15
回答 4查看 747关注 0票数 1

需要从下表中获得那些没有时间进入2015年11月的身份证。

表1:

代码语言:javascript
复制
id_no        time-in 

S12      02-JUL-10 08.00.00
S12      07-OCT-10 10.00.00
S12      23-FEB-11 08.00.00
S12      01-FEB-14 09.00.00
S12      26-NOV-15 00.00.00
S68      15-MAR-06 08.00.00
S80      28-OCT-09 08.00.00
S80      07-OCT-10 10.00.00
S80      23-FEB-11 08.00.00

样本输出

代码语言:javascript
复制
id_no 
s68
s80

我不知道如何写上面的查询。我试过下面的方法

代码语言:javascript
复制
SELECT DISTINCT ID_NO FROM TABLE1
WHERE TO_CHAR(TIME_IN, 'YYYYMM') not in('201511');

我得到的输出

代码语言:javascript
复制
id_no 
s12
s68
s80

我可以理解它接受表中重复的in条目。我要避免那样做。

请帮助编写将输出作为“示例输出”的查询。

非常感谢您的建议。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-12-02 08:20:44

代码语言:javascript
复制
SELECT DISTINCT ID_NO FROM TABLE1 WHERE TO_CHAR(TIME_IN, 'YYYYMM') <> ('201511')
MINUS
SELECT DISTINCT ID_NO FROM TABLE1 WHERE TO_CHAR(TIME_IN, 'YYYYMM') = '201511';

上述查询将放弃s12,因为它在2015年11月有时间。

票数 0
EN

Stack Overflow用户

发布于 2015-12-02 08:21:49

您的查询选择未在11月份的行,然后显示它们所具有的不同的id_no。如果您只想检索11月没有发生的ID,exists操作符可以帮助您:

代码语言:javascript
复制
SELECT DISTINCT id_no
FROM   table1 t1
WHERE  NOT EXISTS (SELECT *
                   FROM   table1 t2
                   WHERE  TO_CHAR(t2.time_in, 'YYYYMM') = '201511' AND
                          t1.id_no = t2.id_no)
票数 0
EN

Stack Overflow用户

发布于 2015-12-02 09:53:09

您所做的区分语句是正确的,以防止重复。就我个人而言,我更喜欢使用GROUP BY,但两者都是可能的。

我不会使用to_char函数来选择on,因为DB必须将该函数应用于每个记录,然后才能开始筛选。像BETWEEN>= AND <=这样的范围选择通常更快、更清晰。

有两种选择:

1)清洁和简单:由id_no组成的组,统计2015年11月所有站点出现的情况,并且只返回那些数量为0的站点。

代码语言:javascript
复制
SELECT t1.id_no
FROM table1 AS t1
GROUP BY id_no
HAVING SUM(IF(t1.time-in BETWEEN '2015-11-01'AND '2015-12-01', 1, 0)) = 0;

2)带有子查询。我可以想象,对于MySQL来说,成功地使用这个索引会更容易。(受莫里尼克氏答案启发):

代码语言:javascript
复制
SELECT DISTINCT t1.id_no
FROM   table1 AS t1
WHERE  id_no NOT IN (
    SELECT DISTINCT id_no
    FROM   table1 AS t2
    WHERE  t2.time-in BETWEEN '2015-11-01' AND '2015-12-01'
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34037745

复制
相关文章

相似问题

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