首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL -多注册条件查询

SQL -多注册条件查询
EN

Stack Overflow用户
提问于 2013-03-08 23:15:47
回答 2查看 57关注 0票数 3

我有以下表结构:

代码语言:javascript
复制
ID       COMPANY       PROJECT      ACTIVITY     TYPE
1        A             1            A1.1         NORMAL
2        A             1            A1.2         NORMAL
3        A             1            A1.3         NORMAL
4        A             2            A2.1         DUMMY
5        A             2            A2.2         DUMMY
6        A             2            A2.3         DUMMY
7        A             3            A3.1         NORMAL
8        A             3            A3.2         DUMMY
9        A             3            A3.3         NORMAL

我的目标是检索公司和项目,其中所有活动(在组合公司x项目中)都是虚拟的。

我写的SQL代码如下:

代码语言:javascript
复制
SELECT COMPANY, PROJECT
FROM TABLE
GROUP BY COMPANY, PROJECT
HAVING TYPE = 'DUMMY'

然而,它不仅带来了公司A和项目2(这是唯一满足我条件的项目),而且还带来了公司3项目3(它只有一个虚拟类型)。

你们能帮我修改一下声明吗?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-08 23:17:21

你已经接近成功了。使用MAXMIN函数。

代码语言:javascript
复制
SELECT  COMPANY, PROJECT
FROM    TABLE
GROUP   BY COMPANY, PROJECT
HAVING  MAX(TYPE) = MIN(TYPE) AND
        MAX(TYPE) = 'DUMMY'
票数 3
EN

Stack Overflow用户

发布于 2013-03-08 23:55:06

您可以使用EXISTS语句来获得您正在寻找的答案:

代码语言:javascript
复制
SELECT DISTINCT COMPANY, PROJECT
FROM TABLE t
WHERE EXISTS (
  SELECT 1
  FROM TABLE tDummy
  WHERE tDummy.COMPANY = t.COMPANY
  AND tDummy.PROJECT = t.PROJECT
  AND tDummy.[TYPE] = 'DUMMY')
AND NOT EXISTS (
  SELECT 1
  FROM TABLE tNotDummy
  WHERE tNotDummy.COMPANY = t.COMPANY
  AND tNotDummy.PROJECT = t.PROJECT
  AND (
    tNotDummy.[TYPE] <> 'Dummy'
    OR tNotDummy.[TYPE] IS NULL));

这假设如果TYPE为null,您不会将其算作“DUMMY”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15297216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档