比较同一个表并忽略结果

时间:2016-04-26 19:42:19

标签: sql

好的,所以我需要一个表来提取数据。该表如下所示:

ID        CO_ID      Company
123456               ABC Company
5847      123456     Jim Bob Company
524863               John Smith Company
8975                 Suzie Q United
77458     524863     Ha Ha Limited

我需要查询该表,以便向我提供与其他公司无关或与公司挂钩的所有公司。因此,每家公司都有一个ID,但只有少数公司有一个CO_ID,只有当它们与另一家公司联系时才会这样。我想只吸引那些与自己没有联系的公司。这些记录都存在于同一个表中。我似乎无法弄清楚如何进行比较,因此我得到了我正在寻找的结果。

编辑:在此示例中,只应返回8975。在现实生活中,该表中有3500条记录。

感谢。

杰森

3 个答案:

答案 0 :(得分:2)

我认为您希望CO_ID为空的所有行和ID未被另一行引用。

SELECT * 
FROM table
WHERE ID NOT IN (SELECT CO_ID FROM table WHERE CO_ID IS NOT NULL)
  AND CO_ID IS NULL

答案 1 :(得分:2)

据推测,你想要这个:

SELECT * 
FROM table t
WHERE NOT EXISTS (SELECT 1 FROM table t2 WHERE t2.CO_ID = t.ID) AND
      CO_ID IS NULL;

请注意NOT INNOT EXISTS的语义略有不同。 “等效”NOT IN查询不会返回任何行,因为CO_ID会带有NULL个值。

答案 2 :(得分:0)

尝试

$(".list-header").on('click', function(){
    if($(this).find(".col-wrapper").css("display", "none")){
      force data-state to be hide
    }
});

如果空白条目为''(单个空格),则变为

SELECT id, company FROM table
WHERE id NOT IN (SELECT co_id FROM table WHERE co_id IS NOT NULL)
AND co_id IS NULL;

如果它们是''(空字符串),请使用