显示另一个 table SQLite 中不存在的值

Show value not existing in another table SQLite

我想显示 EXTRA_CALL 中不存在于 TBL_CALLPLAN 中的值。 我有查询是:

Cursor c = db.rawQuery("select a.CODE, a.NAME from EXTRA_CALL a LEFT JOIN TBL_CALLPLAN b ON b.CCODE=a.CODE " +
                "WHERE b.CCODE IS NULL", null);

当我运行查询时,值总是显示在EXTRA_CALL table中。我的错在哪里?

要么每个 CALLPLAN 行都没有匹配的 EXTRACALL 行,要么您的 SQLite 遇到与某些版本的 Oracle 9i 相同的错误,其中 tables 在 ON 条件下的顺序很重要。交换它以便查询显示 on a.code=b.ccode 并查看结果是否不同。它不应该是,但是在使用那个古老版本的 oracle 时,它​​肯定希望 JOIN 关键字左侧的 table 也是 = 左侧声明的那个,如果做一个 left加入。也许SQLite也有这个坏习惯

这个查询解决了我的问题:

    Cursor c = db.rawQuery("select a.CODE, a.NAME from EXTRA_CALL a where " +
            "not a.code in (select ccode from tbl_callplan) order by a.custname asc", null);