2016-04-21 44 views
0

我試着將NOT IN查詢轉換爲NOT EXISTS。但不存在不會返回我期望的..我在做什麼錯了?轉換不存在不存在不會返回相同的

NOT IN QUERY:

SELECT BLC.LABEL_COLECCTIONS_ID 
    FROM BET_LABELS BL, 
     BET_LABEL_SEASONS BLS, 
     BET_LABEL_COLLECTIONS BLC 
     WHERE BLC.LABEL_ID = BL.LABEL_ID 
     AND BL.LABEL_ID = BLS.LABEL_ID 
     AND blc.collection_id = 6470 
     AND BLS.SEASON_ID = 71 
     AND blc.label_colecctions_id NOT IN (
              SELECT gp.label_colecctions_id 
              FROM GPE_PRICES GP, gpe_collection_assignements GCA 
              WHERE gp.collection_assignement_id = GCA.collection_assignement_id 
              AND GCA.collection_assignement_id = 101591665 and gca.season_id = 71 
             ); 

NOT EXIST:

SELECT BLC.LABEL_COLECCTIONS_ID 
FROM BET_LABELS BL, 
BET_LABEL_SEASONS BLS, 
BET_LABEL_COLLECTIONS BLC 
WHERE BLC.LABEL_ID = BL.LABEL_ID 
AND BL.LABEL_ID  = BLS.LABEL_ID 
AND BLC.COLLECTION_ID = 6470 
AND BLS.SEASON_ID  = 71 
AND NOT EXISTS (  
       SELECT GP.LABEL_COLECCTIONS_ID 
       FROM GPE_PRICES GP, 
       GPE_COLLECTION_ASSIGNEMENTS GCA 
       WHERE GP.COLLECTION_ASSIGNEMENT_ID = GCA.COLLECTION_ASSIGNEMENT_ID 
       AND GCA.COLLECTION_ASSIGNEMENT_ID = 101591665 
       AND GCA.SEASON_ID     = 71 
      ); 

任何建議將受到讚賞。

回答

4

您需要包括LABEL_COLECCTIONS_ID在條件

SELECT BLC.LABEL_COLECCTIONS_ID 
FROM BET_LABELS BL, 
BET_LABEL_SEASONS BLS, 
BET_LABEL_COLLECTIONS BLC 
WHERE BLC.LABEL_ID = BL.LABEL_ID 
AND BL.LABEL_ID  = BLS.LABEL_ID 
AND BLC.COLLECTION_ID = 6470 
AND BLS.SEASON_ID  = 71 
AND NOT EXISTS (  
       SELECT * 
       FROM GPE_PRICES GP, 
       GPE_COLLECTION_ASSIGNEMENTS GCA 
       WHERE GP.COLLECTION_ASSIGNEMENT_ID = GCA.COLLECTION_ASSIGNEMENT_ID 
       AND GCA.COLLECTION_ASSIGNEMENT_ID = 101591665 
       AND GCA.SEASON_ID     = 71 
       and GP.LABEL_COLECCTIONS_ID=blc.label_colecctions_id 
      ); 
+0

我覺得很愚蠢TY。 – ZaoTaoBao