gpt4 book ai didi

sql - 带有 MINUS INTERSECT 和 UNION 的 SELECT 子句

转载 作者:行者123 更新时间:2023-12-02 03:35:54 25 4
gpt4 key购买 nike

在我的数据库中,我创建了一个名为 DEPTLOC 的表

//DEPTLOC
DNAME CITY
----------------------------
RESEARCH BOSTON
IT PARIS
SCIENCE LONDON
RESEARCH LONDON
SALES NEWYORK
RESEARCH PARIS
RESEARCH NEWYORK
MARKETING NEWYORK

所以我使用了以下查询

SELECT CITY FROM DEPTLOC 
INTERSECT
(
SELECT CITY FROM DEPTLOC WHERE DNAME='SALES'
UNION
SELECT CITY FROM DEPTLOC WHERE DNAME='RESEARCH'
);

但是我的输出是所有CITY都会显示。我的问题是想找到 DNAME='SALES' 或 DNAME='RESEARCH' 中的哪一个在所有城市都有位置。

所以从上表来看,所有不同的城市都是

CITY
-------
BOSTON
PARIS
LONDON
NEWYORK

因为'RESEARCH'有所有位置而'SALES'只有一些,我的输出应该像这样显示

DNAME
---------
RESEARCH

我应该为我的查询更改什么以获得正确的输出

最佳答案

这是一个更短的(比我之前的回答)查询,它只在 DNAME SALES 和 RESEARCH 之间进行检查,以查看哪个 DNAME 包含所有 CITIES。使用集合运算符 UNION ALL 和 MINUS。

SELECT DNAME 
FROM
(
SELECT 'SALES' DNAME, COUNT(*) MISSING_CITIES
FROM
(
SELECT DISTINCT CITY FROM DEPTLOC
MINUS
SELECT CITY FROM DEPTLOC WHERE DNAME = 'SALES'
)
UNION ALL
SELECT 'RESEARCH', COUNT(*) FROM
(
SELECT DISTINCT CITY FROM DEPTLOC
MINUS
SELECT CITY FROM DEPTLOC WHERE DNAME = 'RESEARCH'
)
)
WHERE MISSING_CITIES = 0;

关于sql - 带有 MINUS INTERSECT 和 UNION 的 SELECT 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23476855/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com