显示另一个 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);
我想显示 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);