首页 > 解决方案 > XQuery - 相当于 SQL NOT IN

问题描述

我有一个 SQL 查询,我想了解如何使用 XQuery 进行等效查询。

SELECT S.name
FROM SCHOOL AS S
WHERE S.name NOT IN (
SELECT S1.name 
FROM SCHOOL AS S1, KID AS K
WHERE S1.county <> k.county AND S1.name = k.school_name
)

此查询查找只为与学校所在县居住的学生提供服务的学校。现在,这就是我认为 XQuery 中等效查询的样子:

for
$p in /Schools/School
where
not($p/Name = ( for 
$s in /Schools/School
$k in /Kids/Kid
where
not($s/County = $k/County)
and $s/Name = $k/School_name
return $s/Name )
) 
return $p/Name

我不确定我在这里所做的是否是合法的语法,以及它是否达到了预期的结果。我可以像以前那样嵌套 XQuery 查询吗?XQuery 语句中的第一个 where 条件会起作用吗?

如果我编写的 XQuery 不起作用,您如何获得与 SQL 的 NOT IN 类似的结果?

标签: xmlxquery

解决方案


你可以这样做,但它看起来很复杂。您觉得以下内容合适吗?

for $p in /Schools/School
where every $k in /Kids/Kid[School_name = $p/Name] 
      satisfies $k/County = $p/County
return $p/Name 

推荐阅读