0%

PostgreSQL 'NOT IN' 子查询

今天遇到一个奇怪的问题,就是在使用NOT IN操作时后面跟一个子查询,发现始终查询不到结果, 但是使用IN操作能够查询到结果。SQL语句如下:

1
2
3
SELECT * FROM parking_records
WHERE parking_id = '1'
AND car_id NOT IN (SELECT car_id FROM users);

查询相关资料后发现,在使用NOT IN操作时,你需要确认values中不能有NULL值,修改后的SQL语句如下:

1
2
3
4
5
6
SELECT * FROM parking_records
WHERE parking_id = '1'
AND car_id NOT IN (
SELECT car_id FROM users
WHERE car_id IS NOT NULL -- 增加非NULL判断
);