我有一个这样的Access表:
{{#each}}
现在我想只选择仅在Project3,Project4,Project5和NOT在Project1,Project2中的列nume_a2c中的值。查询结果应为:2,5
答案 0 :(得分:1)
mysql方式:
http://sqlfiddle.com/#!9/496e61/29
SELECT DISTINCT t.nume_a2c
FROM table1 t
INNER JOIN (
SELECT SUM(nume_proiect IN ('Proiect1', 'Proiect2')) as criteria,
nume_a2c,
SUM(IF(nume_proiect = 'Proiect3',1,0)) as p3,
SUM(IF(nume_proiect = 'Proiect4',1,0)) as p4,
SUM(IF(nume_proiect = 'Proiect5',1,0)) as p5
FROM table1
GROUP BY nume_a2c
) t1
ON t.nume_a2c = t1.nume_a2c
AND t1.criteria=0
AND t1.p3 > 0 AND t1.p4 > 0 AND t1.p5 > 0
答案 1 :(得分:1)
select DISTINCT nume_a2c
from (
SELECT nume_a2c,nume_proiect
FROM table1
WHERE nume_a2c IN
(
SELECT nume_a2c
FROM table1
where nume_proiect in ('Proiect3','Proiect4', 'Proiect5')
)
and nume_a2c not in
(
SELECT nume_a2c
FROM table1
where nume_proiect in ('Proiect1', 'Proiect2')
)
group by nume_a2c, nume_proiect ) as BB
group by nume_a2c
having count(nume_proiect) = 3
;
这应该有效,您可以查看here
答案 2 :(得分:1)
你可能需要一些LEFT JOIN来获得Proiect3,4和5中的所有nume_a2c。
SELECT * FROM tableName t
LEFT JOIN tableName t1 ON t1.nume_a2c = t.nume_a2c
LEFT JOIN tableName t2 ON t2.nume_a2c = t.nume_a2c
WHERE t.nume_proiect = 'Proiect3'
and t1.nume_a2c is not null
and t2.nume_a2c is not null
and t1.nume_proiect = 'Proiect4'
and t2.nume_proiect = 'Proiect5'
答案 3 :(得分:1)
这已在Access 2010中测试过:
SELECT nume_a2c
FROM (SELECT DISTINCT nume_a2c, nume_proiect FROM table1)
WHERE
nume_proiect IN ('Proiect3','Proiect4','Proiect5')
AND
nume_a2c NOT IN (
SELECT nume_a2c
FROM table1
WHERE nume_proiect IN ('Proiect1','Proiect2')
)
GROUP BY nume_a2c
HAVING COUNT(*) = 3