Oracle中的EXCEPT关键字

时间:2013-03-16 02:48:10

标签: sql oracle10g sql-except

我正在尝试在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
  );

2 个答案:

答案 0 :(得分:19)

Oracle MINUS是一个运营商;它相当于SQL Server中的EXCEPTHere is a previous post解释了这些差异。这是一个简单的例子:

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

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

答案 1 :(得分:0)

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;