0

私はこの問題に出くわしたSQLにかなり慣れていません:私は人が力を持つ関係テーブルを持っています

A has X
A has Z
B has X
B has Y
C has Y
D has Z

この場合は B である、力 X と Y を持つすべての人を選択したいと思います。もちろん、より複雑な力の組み合わせがあります。

4

2 に答える 2

1

このようなことをして、

SELECT person
FROM tableName
WHERE power IN ('x', 'y')
GROUP BY Person
HAVING COUNT(*) = 2

一意の制約がpowerすべての人に適用されていない場合は、使用する必要がありますDISTINCT

SELECT person
FROM tableName
WHERE power IN ('x', 'y')
GROUP BY Person
HAVING COUNT(DISTINCT power) = 2
于 2012-12-22T13:54:37.140 に答える
1

これは関係分割と呼ばれます。これを行う 1 つの方法を次に示します。

SELECT person
FROM Powers
WHERE power IN ('x', 'y')
GROUP BY person
HAVING COUNT(power) = 2
于 2012-12-22T13:54:38.023 に答える