【问题标题】:Selecting only the entries that have a distinct combination of values?只选择具有不同值组合的条目?
【发布时间】:2012-11-10 14:33:26
【问题描述】:

我有一个表 links1,它有列标题 CardID 和 AbilityID,看起来像这样:

CardID | AbilityID
1001   | 1
1001   | 2
1001   | 3

1002   | 2
1002   | 3
1002   | 4

1003   | 3
1003   | 4
1003   | 5

我想要的是能够返回所有具有两个特定 AbilityID 的 CardID。

例如:

如果我选择 1 和 2,则返回 1001。
如果我选择 3 和 4,它会返回 1002 和 1003。

是否可以只使用一个表来执行此操作,或者我需要创建一个相同的表并在这些表上执行 INNER JOIN?

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    尝试自我加入:

    SELECT t1.CardID 
    FROM links1 AS t1 
    JOIN links1 AS t2 
    ON t1.CardID = t2.CardID 
    WHERE t1.AbilityID = 1 AND t2.AbilityID = 2;
    

    See this SQLFiddle

    【讨论】:

    • 哇,太完美了。谢谢!
    【解决方案2】:
    You can try nested query,in your case
    SELECT cid FROM
        (
            SELECT cid,COUNT(cid) AS total FROM links WHERE aid = 1 OR aid = 2
            GROUP BY cid
        ) AS t1 WHERE total%2 = 0; 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-30
      • 2018-12-12
      • 2016-01-11
      相关资源
      最近更新 更多