用 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来查询一个表中的数据,条件是该表中的某个字段不包含另一个子查询中的值的主要内容,如果未能解决你的问题,请参考以下文章