查找缺少先前指定的记录

时间:2018-01-22 03:20:19

标签: mysql sql

我有一些我无法弄清楚的代码,我确信答案就在这里,但我用过的搜索词并没有成功。

我正在尝试从我的数据库中选择记录,其中竞争对手已经转移到更高级别的竞争,然后从较低级别获得认证。

此场景中的较高级别位于Class_Subset列下,RO为较高级别。 而较低级别的认证属于标题栏。 NAC是认证。

我写了一些代码,但显然不起作用。

我需要的是选择一个人有记录的记录,其中RO列为Class_Subset,但在竞争对手记录的标题栏中没有NAC。

这是SQL小提琴。 http://sqlfiddle.com/#!9/b65e0b

RegNum是竞争对手记录的组合。

下图说明了问题以及需要什么。很抱歉缺少基于文本的数据。 https://imgur.com/pH9RIjZ

2 个答案:

答案 0 :(得分:0)

返回两行。

使用Not Exists意味着regNum没有NAC类,但只有RO的子集

select * from points p
where class_subset = 'RO'
and not exists (
  select 1 from points p1
  where p1.regNum = p.regNum
  and p1.Class = 'NAC'

  )

答案 1 :(得分:0)

请试试这个

SELECT * FROM Points t1 left join Points t2 On t1.RegNum = t2.RegNum where t1.Class_Subset = 'RN' AND t2.Class_Subset = 'RN'  AND t2.Class != 'NAC';