查找位于 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/