我需要这样的查询:

SELECT DISTINCT Carta_ID
FROM Carta_Alarme
INNER JOIN Alarme ON Carta_Alarme.Alarme_ID = Alarme.ID
WHERE (
YEAR( Alarme.dtOcorrencia ) = 2011
) NOT
IN (

SELECT DISTINCT Carta_ID
FROM Carta_Alarme
INNER JOIN Alarme ON Carta_Alarme.Alarme_ID = Alarme.ID
WHERE (
YEAR( Alarme.dtOcorrencia ) = 2012
)
)


第一次选择的结果是(1、5、6)。 “ NOT IN”之后的另一个选择的结果是(1,2,3,4,5),但是总查询的结果是(1,2,3,4,5),我只需要(6)。

所以我需要的是选择和我得到的是交叉

最佳答案

SELECT Carta_ID
FROM Carta_Alarme
INNER JOIN Alarme ON Carta_Alarme.Alarme_ID = Alarme.ID
GROUP BY Carta_ID
HAVING sum(YEAR(Alarme.dtOcorrencia) = 2011) > 0
   and sum(YEAR(Alarme.dtOcorrencia) = 2012) = 0

10-06 06:59