【问题标题】:sql remove common from two select statementssql 从两个 select 语句中删除 common
【发布时间】:2018-08-03 08:51:06
【问题描述】:

我正在尝试进行 SQL Select 查询,在该查询中可以看到今天工作的所有员工。

第一个查询选择所有员工:

SELECT      Medarbejdere.navn AS Medarbejder
FROM        Medarbejdere

另一个选择显示不在工作的员工。

SELECT      Medarbejdere.navn AS Medarbejder
FROM        Medarbejdere, Fravaer
WHERE       Medarbejdere.id = Fravaer.medarbejder
AND         Fravaer.slut IS NULL

如何将两个 select 语句结合起来,从而将今天不上班的员工从完整的员工列表中删除(第一个 select 语句)?

我尝试使用 UNION 和 JOINS。

有什么建议吗?

编辑--> 这确实有效,但我想让它与 JOIN 一起工作

SELECT      Medarbejdere.navn AS Medarbejder
FROM        Medarbejdere
EXCEPT
SELECT      Medarbejdere.navn AS Medarbejder
FROM        Medarbejdere, Fravaer
WHERE       Medarbejdere.id = Fravaer.medarbejder
AND         Fravaer.slut IS NULL 

没有结束日期的Fravaer(缺席)(我试图过滤掉的那些)

INSERT INTO Fravaer VALUES (3, '2018-08-01', null, 4);

或有结束日期的缺席(我试图包括的那些)

INSERT INTO Fravaer VALUES (6, '2018-08-01', '2018-09-01', 5);

【问题讨论】:

  • 提供样本数据和期望的结果。

标签: sql select compare


【解决方案1】:

我不确定列名定义了什么,只是为了给你一些想法。查找不在非工作列表中的员工。

您也可以使用左连接,看看哪个更快。

-- dummy query based on your inputs

SELECT      Medarbejdere.navn AS Medarbejder
FROM        Medarbejdere
where Medarbejdere.id not in (
SELECT      Medarbejdere.id
FROM        Medarbejdere, Fravaer
WHERE       Medarbejdere.id = Fravaer.medarbejder
AND         Fravaer.slut IS NULL )

-- second option, based on sample data
SELECT *
FROM    Medarbejdere m
LEFT JOIN Fravaer f
    ON f.medarbejder = m.ID
WHERE f.slut IS NOT NULL and f.slut>= '2018-09-01'; //you can use generic 
currentdate option

【讨论】:

  • 嗨,它确实有效!你能用 JOIN 代替吗?
  • 您是否尝试过使用不为空的第二个查询?结果是什么?
  • 这会导致输出完全没有。还有已经结束的缺席。
【解决方案2】:

您可以使用LEFT 加入:

SELECT *
FROM    Medarbejdere m
    LEFT JOIN Fravaer f
        ON f.medarbejder = m.ID
WHERE f.ID IS NULL;

【讨论】:

  • 感谢您的回答。 f.id 应该是 f.slut(slut 意味着结束我丹麦)。我知道当我使用本地语言时,编码有点困难。希望没事。但是,它不起作用,因为它还包括已经离开工作的员工,其中 NULL 是日期。
猜你喜欢
  • 2013-08-04
  • 2010-11-24
  • 1970-01-01
  • 2013-05-31
  • 2018-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多