での選択や除外グループIは、次のようなテーブルを持っている:SQL:多くのID
| id | Category |
|----|----------|
| 1 | Red |
| 1 | Cat |
| 2 | Blue |
| 3 | Yellow |
| 3 | Dog |
| 3 | Bike |
| 4 | Blue |
| 4 | Cat |
私が欲しいものは、idでグループにされ、以下の特徴のすべての3つを持っているだけで、それらのIDを保ちます:
- 少なくとも1色(赤、黄、青)
- 少なくとも1動物(犬、猫、魚)
- ませ輸送のいずれかのモード(自転車、車、バス)
は、したがって、上記の表の例では、私は1と4で維持し、グループたいが、2と3
を除外するここで私が持っているコードは、これまでのところです:
SELECT id
FROM table
GROUP BY id
HAVING( (sum(case when (code_value IN ('Red', 'Yellow', 'Blue') then 1 else 0 end) > 0)
AND
(sum(case when (code_value IN ('Cat', 'Dog', 'Fish') then 1 else 0 end) > 0)
AND
(sum(case when (code_value IN ('Bike', 'Car', 'Bus') then 0 else 1 end) > 0)
)
このコンセプトはうまくいくようですが、非常に遅いです。他の誰かがこれについてもっと良い考えを持っているのだろうかと思います。これが機能することに注意してください、私は3つ以上の特性を持つケースがありますので、簡単に拡張できるのが理想的です。
ああ、お詫び申し上げます、それはMySQLです – Corwin