2016-06-30 11 views
2

私は次のエントリを持つMySQLテーブルを持っていると言います。SQL別の列の値を選択してください

ID,  PRODUCTID 
95,  2 
95,  2 
95,  1 
96,  1 
102, 1 
102, 5 
95,  5 

ID-column値が1つのみのPRODUCTIDを選択するにはどうすればよいですか。

私は戻って取得したい結果は次のとおりです。私はラインで何かを試してみました

PRODUCTID 
2 

SELECT DISTINCT PRODUCTID 
FROM `TABLE` 
GROUP BY ID, PRODUCTID 
HAVING COUNT(*) = 1; 

答えて

2

グループ独自のid

SELECT PRODUCTID 
FROM your_table 
GROUP BY PRODUCTID 
HAVING COUNT(distinct ID) = 1 
-1
ID,  PRODUCTID 
95,  2 
95,  2 
95,  1 
96,  1 
102, 1 
102, 5 
95,  5 
you can use this this is working fine 
SELECT distinct product_id from category GROUP BY id, product_id 
HAVING COUNT(*) = 1; 
2
SELECT DISTINCT x.PRODUCTID 
      FROM my_table x 
      LEFT 
      JOIN my_table y 
      ON y.PRODUCTID = x.PRODUCTID 
      AND y.ID <> x.ID 
      WHERE y.ID IS NULL; 
2

COUNT(DISTINCT)をカウントするcount(distinct id)を使用し、その後productidによると、この問題を解決する一つの方法です。しかし、私はMIN()MAX()を比較することを好む - これらは計算に安価であるので:NULLである可能性があり

SELECT PRODUCTID 
FROM `TABLE` 
GROUP BY PRODUCTID 
HAVING MIN(ID) = MAX(ID); 

ID場合は、別の条件を追加する必要があります:

SELECT PRODUCTID 
FROM `TABLE` 
GROUP BY PRODUCTID 
HAVING (MIN(ID) = MAX(ID) AND COUNT(*) = COUNT(ID)) OR -- No NULL values 
     (MIN(ID) IS NULL);        -- or all NULL values 
+0

興味深いソリューションを、ありがとう – user634545

関連する問題