17

我正在尝试在 Oracle 10.1.0.2.0 中使用 EXCEPT 关键字,但不断收到错误“未知命令”。我试过谷歌搜索,有人说关键字是 MINUS,所以我改用 MINUS,但我仍然遇到同样的错误。任何的想法?谢谢。

所以这是我的查询。我正在查找注册所有课程编号 > 500 的学生的姓名

SELECT s.name
FROM Students s
WHERE NOT EXISTS
  (
    SELECT c.id
    FROM Courses c
    WHERE c.number > 500

    MINUS

    SELECT e.course_id
    FROM Enrollment e
    WHERE e.student_id = s.id
  );
4

2 回答 2

29

OracleMINUS是运营商;它相当于EXCEPT在 SQL Server 中。 这是以前的帖子,解释了差异。这是一个简单的例子:

SELECT a, b, c
FROM   table_a
MINUS
SELECT a, b, c
FROM   table_b

如果您仍有问题,请将您正在使用的完整查询添加到您的问题中;这可能是一个简单的语法错误。

于 2013-03-16T03:10:54.990 回答
1

Oracle 20c 将支持EXCEPT/EXCEPT ALL关键字。

SELECT col1, col2
FROM t1
EXCEPT
SELECT col1, col2
FROM t2;

或者EXCEPT ALL如果你想处理重复:

SELECT col1, col2
FROM t1
EXCEPT ALL
SELECT col1, col2
FROM t2;

4.6 集合运算符

集合运算符将两个组件查询的结果组合成一个结果。

除了第一个查询选择的所有不同行但不是第二个查询

EXCEPT ALL第一个查询选择的所有行,但不包括第二个查询,包括重复项

于 2019-09-20T18:16:54.623 回答