代码之家  ›  专栏  ›  技术社区  ›  Umair Ayub

检查另一个表中是否存在使用not in的ID不起作用-mysql

  •  1
  • Umair Ayub  · 技术社区  · 6 年前

    我想检查一个表的某些ID是否在另一个表中不存在

    这里有完整的模式和MySQL查询 http://sqlfiddle.com/#!9/f5705b/1

    我使用的查询是

    SELECT * from _ayub WHERE a_id NOT IN(SELECT u_id FROM `_umair`)
    

    让我说我有 33866326 在里面 _ayub 但它不在 _umair 但它没有显示在最终查询结果中

    1 回复  |  直到 6 年前
        1
  •  1
  •   Lukasz Szozda    6 年前

    你需要处理 NULLs :

    SELECT * 
    FROM _ayub 
    WHERE a_id NOT IN(SELECT u_id FROM `_umair` WHERE u_id IS NOT NULL)
    
    -- or
    SELECT * 
    FROM _ayub 
    WHERE a_id NOT IN(SELECT COALESCE(u_id,-1) FROM `_umair`)
    

    SQLFiddle demo

    相关: Strange results from NOT IN subquery