2016-09-15 5 views
1

私は以下のようなMySQLテーブルを持っています。完全に無効になっている人物の名前を探したいと思います。有効なレコードのみを検索するクエリによるSQLグループ

これが私のテーブルです:この場合

+----+----------+---------+ 
| id | name  | enabled | 
+----+----------+---------+ 
| 1 | person 1 |  1 | 
| 2 | person 1 |  0 | 
| 3 | person 2 |  0 | 
| 4 | person 2 |  0 | 
| 5 | person 3 |  1 | 
| 6 | person 3 |  1 | 
+----+----------+---------+ 

enabled列がブール値を表します)

両方のレコードが無効になっているので、私は、人2を見つけたいと思います。私は人1がまだ行1で有効になっており、人3が完全に有効になっているので、人1を検索したくないため、除外する必要もあります。

答えて

4

あなたは集約とhaving句でこれを行うことができます。

select name 
from t 
group by name 
having max(enabled) = 0; 
+0

恐ろしいです。私はちょうど 'select * from p group from sum(enabled)= 0'という名前を思いついた。おそらくあなたの方が良いでしょう。 –

+0

@エリック私は本当にこれを解決策として本当に好きです。それはあなたが探しているものです。 @Erik。 – Pachonk

+0

。 。あなたのデータには2つのものがほぼ同等です。 –

0
SELECT name 
    FROM table 
GROUP BY name 
HAVING MIN(enabled) = 0 AND COUNT(1) = 1; 
関連する問題