このような2つのテーブルがある場合
CREATE TABLE ta(`ID` int, `name` char(10));
INSERT INTO ta (`ID`, `name`)
VALUES
(1, 'A'),
(2, 'A'),
(3, 'B'),
(4, 'C'),
(5, 'B');
CREATE TABLE yourtable(`ID` int, `Val` int);
INSERT INTO yourtable (`ID`, `Val`)
VALUES
(1, 10),
(1, 20),
(1, 30),
(1, 30),
(2, 10),
(2, 20),
(3, 20),
(3, 20),
(4, 10),
(4, 20),
(5, 10),
(5, 20),
(5, 30);
そして、name
2 つのテーブルを使用して値をグループ化する必要があります。そして、条件 val=10 OR val=30 の場合、正常に機能します。http://sqlfiddle.com/#!2/9c099/1
select name, count(distinct t1.id)
from yourtable as t1, ta
where t1.id=ta.id
AND (val=10 OR val=30)
group by name
しかし、条件(val=10 AND val!=30)については、どのように照会すればよいでしょうか? そのために、出力は
Count
A 1
B 0
C 1
以下に例を示します。name=A の場合、ID=1,2 が得られます。したがって、テーブル yourtable には、ID=1,2 の 5 つの行があります。ID=1 の場合、val=10、20、20。ID=2 の場合、val=10,20 です。ここでは、ID=2 のみが (val=10 AND val!=30) を満たすため、name=A count=1 の場合