Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何使用not EXISTS仅返回其他查询(Access 2013)中不存在的行_Sql_Ms Access - Fatal编程技术网

Sql 如何使用not EXISTS仅返回其他查询(Access 2013)中不存在的行

Sql 如何使用not EXISTS仅返回其他查询(Access 2013)中不存在的行,sql,ms-access,Sql,Ms Access,我无法让这个查询工作。我试图返回表中没有特定关系的每一行 group_id | group_name -------------------------- 1 group1 2 group2 3 group3 4 group4 5 group5 relationship_id | from | to |

我无法让这个查询工作。我试图返回表中没有特定关系的每一行

group_id   |   group_name
--------------------------
    1            group1
    2            group2
    3            group3
    4            group4
    5            group5

relationship_id    |    from    |    to    |     type
-----------------------------------------------------
    1                    1            2       Subgroup
    3                    1            5       Subgroup
    4                    2            3       Subgroup
    5                    4            2       Subgroup
这些表创建一个层次结构,其中[from]是父ID,[to]是子ID

--group1
   --group2
       --group3
   -- group5
--group4
   --group2
我要选择不是另一个组的子组的每个组。基本上,我只想选择顶级组,即没有父级的所有组。这是所有ID不在[TO]下的组

我开始查询以查找所有的孩子。此查询按预期工作

SELECT groups.*
FROM relationships INNER JOIN groups ON relationships.to = groups.ID
WHERE (((relationships.Type)="SubGroup"))
类型与其他内容相关,别担心

这将正确返回以下内容:

group_id   |   group_name
--------------------------
    2            group2
    3            group3
    5            group5
然后,我想我可以使用NOT EXISTS来获取我真正想要的行

SELECT groups.* FROM groups
  WHERE NOT EXISTS (
    SELECT groups.*
    FROM relationships INNER JOIN groups ON relationships.to = groups.ID
    WHERE (((relationships.Type)="SubGroup"))
  )

但是,这不会返回任何行。我是否使用了NOT EXISTS错误?

您正在查找的是组,而groupID不存在于关系表的“to”列中。 试试这个:

SELECT groups.* 
FROM groups
WHERE NOT EXISTS 
(
 SELECT 1
 FROM relationships 
 WHERE groups.group_id = relationships.to
)
我使用了SELECT*FROM table WHERE fieldname NOT INSELECT fieldname FROM table WHERE某些条件;