用 NOT EXISTS来查询一个表中的数据,条件是该表中的某个字段不包含另一个子查询中的值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用 NOT EXISTS来查询一个表中的数据,条件是该表中的某个字段不包含另一个子查询中的值相关的知识,希望对你有一定的参考价值。

语句大概是这样的,SELECT * FROM A WHERE NOT EXISTS(SELECT X FROM B WHERE PERSON_ID=:1),&person_id;在子查询中,的person_id需要取系统登录人的id,这个语句应该怎么写,&person_id放在括号里面和外面都报错

参考技术A 这样:
SELECT * FROM A WHERE PERSON_ID NOT EXISTS(SELECT X FROM B WHERE PERSON_ID=1);追问

主要PERSON_ID是不定的,是根据当前系统的登录人来确定的,而这个条件又是子查询中的条件,表A中不含有PERSON_ID这个字段。字段X是两个表关联的字段。

追答

那你总得有个字段表明用户是否是登录状态才得,或者说,你得提供登录者ID的获取方式。
假设B表有个字段loginstatus=1 表明用户是登录的,则可以这样写:
SELECT * FROM A WHERE X NOT EXISTS(SELECT X FROM B WHERE loginstatus=1);

这样就可以实现了动态获取当前登录用户的ID了。

当然,实际可能loginstatus字段不一定在B表中,如果在其他表中,你可以关联查询即可。

追问

登录人的ID已经知道了,是通过另外一个查询查出来后将ID付给了变量person_id,然后再进行问题中的查询

追答

既然ID已经知道,那问题就解决了啊。

SELECT * FROM A WHERE X NOT EXISTS(SELECT X FROM B WHERE PERSON_ID(此处的PERSON_ID自己关联查询)=1);

以上是关于用 NOT EXISTS来查询一个表中的数据,条件是该表中的某个字段不包含另一个子查询中的值的主要内容,如果未能解决你的问题,请参考以下文章

校用设备|校用设备课桌椅|校用设备

resource啥时候用单数?啥时候用复数?

什么时候用卡方检验,什么时候用t检验,什么时候用u检验

用Reactjs用自制编译器

标准测试中一天能写多少测试用例?执行多少用例?这个有标准不?

(处女座的)用英文怎么说