【问题标题】:Select data based on condition that match multiple column values根据匹配多个列值的条件选择数据
【发布时间】:2020-01-04 00:30:27
【问题描述】:

我对 SQL 世界很陌生。想知道是否有人可以阐明以下情况。我正在尝试获取包含该特定帐户的交易代码 150 和 300 的帐号列表。

表:事务

+-------+--------+----------+
| AcNum | TxCode |   Date   |
+-------+--------+----------+
|   111 |    150 | 1/1/2019 |
|   111 |    100 | 1/1/2019 |
|   111 |    100 | 1/2/2019 |
|   123 |    100 | 1/1/2019 |
|   123 |    200 | 1/1/2019 |
|   123 |    300 | 1/1/2019 |
|   123 |    300 | 1/2/2019 |
|   222 |    150 | 1/1/2019 |
|   222 |    150 | 1/2/2019 |
|   333 |    300 | 1/2/2019 |
|   333 |    150 | 1/3/2019 |
|   444 |    100 | 1/1/2019 |
|   444 |    300 | 1/1/2019 |
|   444 |    150 | 1/1/2019 |
|   456 |    100 | 1/1/2019 |
|   456 |    200 | 1/1/2019 |
|   456 |    300 | 1/1/2019 |
|   456 |    150 | 1/2/2019 |
|   789 |    100 | 1/1/2019 |
|   789 |    100 | 1/2/2019 |
|   789 |    300 | 1/1/2019 |
+-------+--------+----------+

这是我创建的 SQL 查询,但它返回具有 150 和 300 的帐户,但它还包含仅具有这些交易之一的帐户。我正在寻找包含这两项交易的帐户。

SELECT acnum
FROM   transactions
WHERE  txcode IN ( '150', '300' )  

想要的结果如下

AcNum
333
444
456

我得到的结果如下

AcNum
111
123
222
333
444
444
456
789

【问题讨论】:

    标签: mysql select search


    【解决方案1】:

    您必须 GROUP BY acnum 并将不同的 txcode 计数为 2:

    SELECT acnum
    FROM   transactions
    WHERE  txcode IN ( '150', '300' )
    GROUP BY acnum
    HAVING COUNT(DISTINCT txcode) = 2
    

    请参阅demo
    结果:

    | acnum |
    | ----- |
    | 333   |
    | 444   |
    | 456   |
    

    【讨论】:

    • 我认为他允许超过 150 和 300 的记录(见 444),而不是只有其中之一的记录
    • @Rogue 查看演示。
    • 谢谢!使用选择中的计数运行它对我有帮助。我今天要走了
    【解决方案2】:

    您还可以在IN 中使用子选择:

    SELECT DISTINCT acnum
    FROM transactions
    WHERE 
       acnum IN (SELECT acnum FROM transactions WHERE tx=150) AND
       acnum IN (SELECT acnum FROM transactions WHERE tx=300)
    

    See it in action.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-30
      • 2015-12-18
      • 2016-11-16
      相关资源
      最近更新 更多