有2张表,结构如下:
家长表 genearch:
gid varchar2(4) primary key,
gname varchar2(10)
学生表 student:
stuid varchar2(4) primary key,
sname varchar2(10) not null,
gid varchar2(4)
其中,student表中的字段gid是表genearch的外键.
现在有个小需求,student表中有些学生是没有家长的,要求查出student表中没有家长的学生信息.
以下是2个sql:
1. 使用IN查询
SELECT S.STUID, S.SNAME
FROM STUDENT S
WHERE S.GID IN (SELECT gid FROM GENEARCH);
2. 使用exists查询
SELECT S.STUID, S.SNAME
FROM STUDENT S
WHERE EXISTS (SELECT gid FROM GENEARCH WHERE s.gid=gid);
建议使用exists查询,因为exists查询效率比IN查询要高,原因请参阅:
http://blog.csdn.net/lick4050312/article/details/4476333