在oracle上尝试关系划分(右括号缺失?)

时间:2014-02-17 10:00:52

标签: sql oracle relational-database

我正在尝试在Oracle中执行以下查询:

SELECT c.id_cliente, c.nombre_cliente, c.apellidos_cliente
FROM cliente c
WHERE not exists (SELECT f.id_finca
       FROM finca f
       WHERE f.habitaciones = 3
       EXCEPT
       SELECT v.id_fincas
       FROM visitas v
       WHERE v.id_cliente = c.id_cliente)

但是我收到错误“缺少右括号”。

括号是平衡的,我该如何解决这个错误?

2 个答案:

答案 0 :(得分:1)

使用MINUS代替EXCEPT

SELECT c.id_cliente, 
       c.nombre_cliente, 
       c.apellidos_cliente 
FROM   cliente c 
WHERE  NOT EXISTS (SELECT f.id_finca 
                   FROM   finca f 
                   WHERE  f.habitaciones = 3 
                   MINUS
                   SELECT v.id_fincas 
                   FROM   visitas v 
                   WHERE  v.id_cliente = c.id_cliente) 

答案 1 :(得分:0)

Oracle中没有运算符EXCEPT。使用MINUS代替它。

此外,您的查询似乎很奇怪:最好尝试使用两个not exists,我认为它可以提供一些性能。