想知道是否有人可以解释为什么我的查询没有在SQLite中提供所需的结果
我有两张桌子
表A包含许多行,其中有一个名为picklist_id的列,其中值重复,我试图获取这些值的不同值,然后检查表2中是否存在此选项列表ID。这就是我所拥有的,但我只是得到一个空结果
SELECT distinct(pt.picklist_id) from picklisttable pt LEFT JOIN pickingtable p on
pt.picklist_id = p.picklist_id where p.picklist_id = null
有人能指出我正确的方向吗?如果表b中不存在,则我希望表中的picklist_id返回
答案 0 :(得分:2)
这应该是IS NULL,而不是= NULL。
SELECT pt.picklist_id
FROM picklisttable pt
LEFT JOIN pickingtable p on pt.picklist_id = p.picklist_id
WHERE p.picklist_id = null;
当要求存在数据时,EXISTS子句通常更易读,或者只处理一列时的IN子句。
SELECT pt.picklist_id
FROM picklisttable pt
WHERE NOT EXISTS (select * from pickingtable p where pt.picklist_id = p.picklist_id);
或
SELECT pt.picklist_id
FROM picklisttable pt
WHERE pt.picklist_id NOT IN (select p.picklist_id from pickingtable p);
或处理集合并使用EXCEPT,我认为它更具可读性:
SELECT picklist_id FROM picklisttable
EXCEPT
SELECT picklist_id FROM pickingtable;
答案 1 :(得分:1)
试试这个。相同的查询,而不是= NULL
IS NULL
SELECT distinct(pt.picklist_id) from picklisttable pt LEFT JOIN pickingtable p on
pt.picklist_id = p.picklist_id where p.picklist_id IS null
答案 2 :(得分:0)
对于你的where子句,请尝试" p.picklist_id为null"而不是" p.picklist_id = null"