SELECT子句使用INTERSECT

时间:2014-05-05 12:03:08

标签: sql oracle

我有一张像这样的表DEPTLOC:

//DEPTLOC
DNAME              CITY
------------------------
RESEARCH          BOSTON
   IT             LONDON
 SCIENCE          BOSTON
SEARCHING         NEWYORK

我使用了以下查询:

SELECT CITY FROM DNAME WHERE DNAME='RESEARCH'
INTERSECT
SELECT CITY FROM DNAME WHERE DNAME='SCIENCE'

所以这会返回如下结果:

CITY
---------
BOSTON

但是我该如何更改代码以便如果找到任何结果,它将显示NO,否则它将显示YES

输出应该是这样的:

RESULT
---------
YES

RESULT
---------
NO

2 个答案:

答案 0 :(得分:2)

您可以使用COUNT()DECODE/CASE

执行以下操作
SELECT DECODE(COUNT(1),0,'NO','YES') AS RESULT FROM 
(
  SELECT CITY FROM DNAME WHERE DNAME='RESEARCH'
  INTERSECT
  SELECT CITY FROM DNAME WHERE DNAME='SCIENCE'
)

答案 1 :(得分:1)

您想要做的是计算结果。

SELECT
  CASE WHEN COUNT(*) = 0 THEN 'Yes' ELSE 'No' END
FROM
(
  SELECT CITY FROM DNAME WHERE DNAME='RESEARCH'
  INTERSECT
  SELECT CITY FROM DNAME WHERE DNAME='SCIENCE'
);

当然还有其他方法可以达到相同的效果。这个演示了如何使用INTERSECT查询来完成它。