2016-11-11 25 views
2

我有一个表。选择出现在另一个查询的所有结果中的条目

此表有2个字段,产品ID和商店ID。相同的产品ID可以与许多不同的商店ID一起存在。

我需要找到所有商店中常见的产品(如果有的话)。

我有困难构建正确的查询,任何建议?

+0

见http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very -simple-sql-query – Strawberry

回答

1

您可以检查不同的商店与IDS产品编号计数。如果不同的Store ID计数等于所有将会是您想要的产品ID的商店。

SELECT productID, count(DISTINCT StoreID) as stroes FROM [Table name] GROUP BY productID 
HAVING COUNT(DISTINCT StoreID) = (SELECT COUNT(DISTINCT StoreID) FROM [Table name]); 
+1

这样做的工作。谢谢。 –

+0

不客气。 –

0

我敢肯定,你会得到很多更好的答案,但它听起来像你想的不同条款的相反,不知道这是否会工作,虽然:

选择NOT DISTINCT [PRODUCT_ID] FROM TABLENAMEHERE

+0

这是行不通的,只是意识到。如何这样的事情: –

+0

SELECT ProductIDFROM Customers WHERE EmailAddress IN (SELECT EmailAddress FROM Customers GROUP BY EmailAddress HAVING COUNT(*)> 1) –

+0

道歉,不用于输入post!,请点击此链接:http:// stackoverflow .com/questions/13146304/how-to-select-every-row-where-column-value-is-distinct-distinct,这是我从下面得到完整答案的地方: SELECT ProductID FROM Tablename WHERE ProductID IN (SELECT ProductID FROM Tablename GROUP BY ProductID HAVING COUNT(*)> 1) –

0

你可以起诉计数(不同的productID)

select productID 
    from my_table 
    group by productID 
    having count(distinct productID) = ( 
       select count(distinct store) 
       from my_table) 
相关问题