【问题标题】:SQL Query using IN but where all results have to have the same grouping ID使用 IN 的 SQL 查询,但所有结果必须具有相同的分组 ID
【发布时间】:2011-03-08 16:21:57
【问题描述】:

不确定如何准确地提出这个问题,因此对于尴尬的措辞深表歉意,通常当我知道如何正确描述问题时,我可以使用网站搜索或谷歌等来查找它。

无论如何,这个问题很简单 - 我正在使用 AttributeId 的可变数组查询链接/联结表,例如 ID 14 和 17。使用下表:

http://img220.imageshack.us/img220/5999/setattributecombo.gif

我想从此查询返回的唯一有效结果是 ProductSetId 相同的地方,所以我想要类似

的东西而不是“IN”
WHERE AttributeIds IN 14,17 AND ProductSetId is the same

在上面的示例中,唯一有效的结果是 5,但如果我使用 IN 查询,我会得到 2,5,7 作为结果。

有什么想法吗?

【问题讨论】:

  • 请添加您所指的表格
  • 该表基本上与您在上面看到的一样,但主键列除外,它是一个联结表,只有两列加上主键。我会阅读可能的副本,希望这就是我所追求的。
  • 如果还有一行 {17,7},输出是什么?
  • “一样”还不够好;你必须以某种方式指定你想要 5 而不是 2 或 7

标签: sql grouping


【解决方案1】:
SELECT ProductSetID, COUNT(*) AS CountOfMatchingRows
From MyTable
WHERE AttributeId IN (14,17 )
GROUP BY ProductSetID
HAVING COUNT(*) = 2

【讨论】:

  • 完美,谢谢。不要假设任何人都知道这类问题的名称,或者它的名称是否比我在问题标题中的描述更好?谢谢。
【解决方案2】:

听起来您想执行关系除法。 Simple-Talk 上有一篇关于各种方法的好文章。 http://www.simple-talk.com/sql/t-sql-programming/divided-we-stand-the-sql-of-relational-division/

【讨论】:

    猜你喜欢
    • 2022-01-02
    • 2023-01-06
    • 1970-01-01
    • 2022-08-11
    • 2016-12-15
    • 2013-11-03
    • 1970-01-01
    • 2012-08-03
    • 1970-01-01
    相关资源
    最近更新 更多