【问题标题】:SQL - building a certain query (intersect between two conditions)SQL - 构建某个查询(在两个条件之间相交)
【发布时间】:2017-06-07 17:18:28
【问题描述】:

我有一个包含两列(与我的问题相关)的表格 - 公司和产品。 它向我提供了有关哪些公司使用多种产品的信息。

例如,假设我想检索所有使用 Microsoft Office 的公司,我将使用条件进行查询 - 产品 = Microsoft Office。

现在,我的问题 - 我需要构建一个查询来检索所有使用两种产品的公司,而不仅仅是一个。 我应该如何构建查询? 我认为它可能应该使用子查询?因为 SQL 需要执行两个查询 - 一个针对我想要的每个产品,然后交叉两个查询以找到两个列表中的公司...

非常感谢帮助!

【问题讨论】:

  • 添加一些示例表数据和预期的结果 - 以及格式正确的文本(不是图像)。同时向我们展示您当前的查询尝试。

标签: sql mysqli


【解决方案1】:

Thomas 是对的,并添加了两个产品:

SELECT 
    COUNT(*),
    <name of the company column>,
    <name of the product column>
FROM
    <table name>
GROUP BY
    <name of the company column>
HAVING
    COUNT(*) = 2
    AND <name of the product column> IN ('product1', 'product2');

【讨论】:

    【解决方案2】:

    假设表中没有重复项,您可以执行以下操作:

    SELECT COUNT(*), <name of the company column> FROM <table name> GROUP BY <name of the company column> HAVING COUNT(*) = 2;
    

    编辑 要找出谁在使用两种特定产品,请改用:

    SELECT COUNT(*), <name of the company column> FROM <table name> WHERE <name of product column> = '<name of 1st product>' OR <name of product column> = '<name of second product>' GROUP BY <name of the company column> HAVING COUNT(*) = 2;
    

    【讨论】:

    • 我还应该添加 - WHERE prudct = a OR product = b,对吧?
    • 哦。我假设您只是想找出谁在使用 2 种产品,无论是哪种产品。
    • 哈哈,好吧。惊人的!明白了...非常感谢!就我的一般知识而言 - 还有其他方法可以达到预期的结果吗?
    • 如果您想拥有超过 2 个特定产品,您也可以使用 IN:SELECT COUNT(), FROM GROUP BY HAVING COUNT() = 2 WHERE IN ('', '', ..., '');
    • WHERE 子句在 GROUP BY 之前,但 cmets 有效
    猜你喜欢
    • 2015-02-04
    • 2020-06-29
    • 2023-02-14
    • 2018-07-20
    • 1970-01-01
    • 2010-12-14
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    相关资源
    最近更新 更多