有2个数据表T_User 和T_Project,它们是一对多的关系。现在用INNER JOIN 关联:
SELECT T_User.f1, T_User.f2, T_User.f3
 FROM T_User 
   INNER JOIN T_Project ON T_User.f1 =T_Project.f1
希望返回的记录集里,如果T_Project中不是空记录,则整个记录集中也不包含这样的记录。WHERE字句后的表达式应该是怎样的?

解决方案 »

  1.   

    where 字段名 is not null
      

  2.   

    SELECT T_User.f1, T_User.f2, T_User.f3
     FROM T_User 
       INNER JOIN T_Project ON T_User.f1 =T_Project.f1 
    where T_Project is null
      

  3.   

    父表T_User 和子表T_Project通过T_User.f1与T_Project.f1关联.
    主要目的:为了保证数据一致,希望对父表T_User 进行修改,但是修改的记录中,不包括子表中已经存在T_Project.f1的记录。 如果用where 字段名 is not null作为筛选条件,结果记录集中包含了子表中已经存在T_Project.f1的记录;如果用where 字段名 is null,结果记录集总是空。
      

  4.   

    已经解决。首先用SELECT返回所有记录,然后用WHERE T_User.f1 not in()排除不需要的记录:
    SELECT f1, f2, f3 FROM T_User   
       WHERE   T_User.f1 not in( SELECT T_User.f1 
     FROM T_User  
       INNER JOIN T_Project ON T_User.f1 =T_Project.f1)