检查单列是否有多个值mysql

时间:2013-08-28 09:01:51

标签: mysql sql sql-server

我有一个表'optionsproducts'具有以下结构和值

ID      OptionID      ProductID
1       1             1
1       2             1
1       3             1
1       2             2
1       2             3
1       3             3

现在我想提取分配了OptionID 2和OptionID 3的ProductID。这意味着在这种情况下应该返回ProductID 1和3。我不确定我错过了什么。任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:4)

要获得与{2}和productID相关的OptionId,您可以编写类似的查询:

select productid
  from ( select productid
              , optionid
              , dense_rank() over(partition by productid 
                                  order by optionid) as rn
           from t1
          where optionid in (2,3)
        ) s
where s.rn = 2

结果:

PRODUCTID
----------
1
3

SQLFiddle Demo

答案 1 :(得分:2)

试试这个 -

DECLARE @temp TABLE
(
      ID INT
    , OptionID INT
    , ProductID INT
)

INSERT INTO @temp (ID, OptionID, ProductID)
VALUES 
    (1, 1, 1),(1, 2, 1),
    (1, 3, 1),(1, 2, 2),
    (1, 2, 3),(1, 3, 3),(1, 3, 3)

SELECT ProductID
FROM @temp
WHERE OptionID IN (2,3)
GROUP BY ProductID
HAVING COUNT(*) > 1

输出 -

ProductID
-----------
1
3

答案 2 :(得分:1)

SELECT DISTINCT ProductID FROM table WHERE OptionID IN(2,3);

答案 3 :(得分:0)

按列名使用distinct on(column-name)顺序。

select distinct on (column_name) require field order by that column name