吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 685|回复: 15
收起左侧

[求助] 【SQL】IN()与NOT IN()遇到的坑该如何解决

[复制链接]
hgnb1 发表于 2023-6-29 09:35
本帖最后由 hgnb1 于 2023-6-29 09:52 编辑

SQL:
[SQL] 纯文本查看 复制代码
SELECT * FROM TableA WHERE TableA.ID NOT IN(SELECT FK01 FROM TableB)


正常有关联的情况下,TableB 外键(FK01)值不为空的状况下,查询结果正常

但是在FK01查询结果为NULL时
[Asm] 纯文本查看 复制代码
SELECT * FROM TableA WHERE TableA.ID NOT IN(NULL)
就会导致查询结果为空。

这种情况有没有其他关键字可以解决,求解答

业务需求是,一张表中有预置数据,选中一条数据确认后会插入到另一张表中,同时选中后的数据要不再显示

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

辛弃吉 发表于 2023-6-29 11:00
。。。。。。。。。。。这不是很简单的需求吗。。。。。
SELECT * FROM TableA LEFT JOIN TableB ON A.ID=B.FK01 WHERE B.FK01 IS NULL
gun008 发表于 2023-6-29 11:02
用 not exists 试试
[SQL] 纯文本查看 复制代码
SELECT * FROM TableA A WHERE NOT exists(SELECT 1 FROM TableB where FK01=A.id )
sky_walk 发表于 2023-6-29 11:14
SELECT * FROM TableA WHERE TableA.ID NOT IN(NULL) 语法不对
改成这样试试:SELECT * FROM TableA WHERE TableA.ID NOT IS NULL
chaifengbox 发表于 2023-6-29 11:28
难道不应该是?
SELECT * FROM TableA WHERE TableA.ID IS NOT NULL
goldli 发表于 2023-6-29 11:55
gun008 发表于 2023-6-29 11:02
用 not exists 试试
[mw_shl_code=sql,true]SELECT * FROM TableA A WHERE NOT exists(SELECT 1 FROM Tabl ...

抛弃in/not in 改用 exists/not exists 。

zhuxiangyu1024 发表于 2023-6-29 12:51
你的需求应该加flag字段,哪有这么弄的。
 楼主| hgnb1 发表于 2023-6-29 13:25
本帖最后由 hgnb1 于 2023-6-29 13:36 编辑
goldli 发表于 2023-6-29 11:55
抛弃in/not in 改用 exists/not exists 。

 楼主| hgnb1 发表于 2023-6-29 13:27
chaifengbox 发表于 2023-6-29 11:28
难道不应该是?
SELECT * FROM TableA WHERE TableA.ID IS NOT NULL

你没有理解我的需求,我的需求是TableA表中有预置数据,选中一条后往TableB中插入。同时将选中的数据排除不再显示
 楼主| hgnb1 发表于 2023-6-29 13:28
sky_walk 发表于 2023-6-29 11:14
SELECT * FROM TableA WHERE TableA.ID NOT IN(NULL) 语法不对
改成这样试试:SELECT * FROM TableA WHERE ...

你没有理解我的需求,我的需求是TableA表中有预置数据,选中一条后往TableB中插入。同时将选中的数据排除不再显示


我第二个语句是演示错误情况,如果子查询为空时,会导致出现NOT IN(NULL) 情况,但此时SQL不会报错,会导致查询结果为空
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-1-11 03:39

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表