查找位于 BOSTON 或 DALLAS 的所有部门的名称,而不是在这两个城市。

我有这样的代码

SELECT D.DNAME
FROM DEPARTMENT D
INNER JOIN DEPTLOC L ON L.DNAME = D.DNAME
WHERE L.CITY='BOSTON'
OR L.CITY='DALLAS' ;

但这将显示位于 BOSTON 或 DALLAS 的部门。但我只想要其中之一,我应该放什么才能得到结果。

例子:
在我的 DEPTLOC 表中
     //DEPTLOC
     DNAME      CITY
     ----------------
     ACCOUNTING  BOSTON
     ACCOUNTING  DALLAS
     SALES       DALLAS
     TRANSPORT   BOSTON
     TRANSPORT   DALLAS

所以在我的部门
我应该得到像
      DNAME
      ----------
      SALES

最佳答案

将它们分组,然后计算每个部门的总数,然后过滤所有只有一个位置的部门。

SELECT D.DNAME
FROM DEPARTMENT D
INNER JOIN DEPTLOC L ON L.DNAME = D.DNAME
WHERE L.CITY='BOSTON'
OR L.CITY='DALLAS'
GROUP BY
D.DNAME
HAVING COUNT(1) = 1

关于sql - 要么在 select sql 中的 not both 子句中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23261385/

10-10 13:28