2012-11-06 66 views
0

该查询为我提供了我想要的结果,并且它完美地工作。mysql得到完全加入的结果

 SELECT * 
     FROM npc5 
     FULL JOIN joeall ON merchnumber = joeall.id 
     WHERE date='$period' 
     ORDER BY DATE"); 

现在我想获得的记录中,其中商户数量是不是在joeall表,像ON merchnumber != joeall.id

+0

改变它的东西,请,不要使用'mysql_ *'扩展名:它被弃用,切换到'PDO'或'mysqli_ *' –

+0

另外,除非你有一个好的,特定的原因(不能被打扰,不是一个!),否则你不想使用'SELECT *'。这样更容易维护你的代码。 – BryanH

回答

1

请确保您有一个datemerchnumber的多字段索引以保持加速。

SELECT * 
    FROM npc5 
    WHERE date='$period' 
    AND merchnumber NOT IN (SELECT id FROM JOEALL) 
    ORDER BY DATE 
1

排除任何ID,它是在NOT IN的SELECT语句中找到

$query1 = mysql_query(" 
    SELECT * 
    FROM npc5 
    WHERE date='$period' 
    AND merchnumber NOT IN (SELECT id FROM joeall) 
    ORDER BY DATE"); 
1

相关子查询可以是非常低效的,应当避免每次可能的。

所以我不建议你做

SELECT * 
FROM npc5 
WHERE date='$period' 
AND merchnumber NOT IN (SELECT id FROM JOEALL) 
ORDER BY DATE 

http://devzone.advantagedatabase.com/dz/content.aspx?Key=42&ID=75

一看,我建议你喜欢

SELECT 
    * 
FROM npc5 LEFT JOIN JOEALL on 
    npc5.merchnumber = joeall.id 
WHERE 
    joeall.id is null 
     and 
    date='$period' 
ORDER BY 
    date; 

问候