访问sql WHERE NOT IN中函数的参数无效

时间:2016-09-28 16:00:28

标签: sql ms-access-2010

我有一个table1

  PreA  BaB   CPS  CommName CommName_CPS
    we   ds   123   Degree   123-Degree
    Se   dd   345   arrow    345-arrow 
    KM   sd   674   inv      674-inv

我有一个table2

  PreA  BaB   CPS  CommName CommName_CPS
    we   ds   123   Degree   123-Degree
    Se   dd   345   arrow    345-arrow 
    KM   sd   674   inv      674-inv
    DJ   gfd  435   klm      435-klm
    rt   ggsd 865   hff      865-hff

Table1(是来自另一个表的查询表)具有字段CommName_CPS,它是连接两个字段,与table2相同。 我通过使用以下查询将tbl1与tbl2进行比较时尝试排除不常见的数据

SELECT table1.PreA, table1.BaB,table1.CPS,table1.CommName,table1.CommName_CPS
FROM table1
WHERE CommName_CPS Not In (select CommName_CPS from table2); 

我收到错误函数的参数无效。

2 个答案:

答案 0 :(得分:1)

尝试这个,如果CommName_CPS可能为null,那么不存在会更好用,您可以在本文中阅读更多相关信息http://sqlinthewild.co.za/index.php/2010/02/18/not-exists-vs-not-in/

SELECT *
FROM   table1 t1
WHERE  NOT EXISTS (SELECT 1
                   FROM   table2 t2
                   WHERE  t1.CommName_CPS = t2.CommName_CPS) 

答案 1 :(得分:1)

正如我在评论中提到的那样..

在连接两个字段时,将表1查询更改为陷阱以获取空值:

SELECT PreA, BaB, CPS,CommName,  
NZ([CPS],"") & "-" & NZ([CommName],"") AS CommName_CPS From <YourOtherTable>