sql语句如何查询有些表中没有的数据?

如题,有借阅表和读者表
(12)查询2005年10月以后借书的读者借书证号、姓名和单位;
SELECT 姓名,单位,读者.借书证号
from 读者,借阅
where 读者.借书证号=借阅.借书证号 and 借书日期>cast ('2005-10-10' as datetime)
(15)查询2005年10月以后没有借书的读者借书证号、姓名和单位;
这个我就不会了,求解决?
第三个是图书表

select å€Ÿä¹¦è¯å·,姓名,单位
from è¯»è€…
where å€Ÿä¹¦è¯å· not in 
(select å€Ÿä¹¦è¯å· from å€Ÿé˜… where å€Ÿä¹¦æ—¥æœŸ>=cast('2005-10-01' as datetime))

 

这样试试

可是你第一个,为什么要用10月10号啊,不是10月1号吗?

追问

前一个我自己输错了..

追答

恩,你第一个运行的结果如果某个人在05年10月后借书次数超过一次
你的数据里会出现重复的名字,这个你考虑了吗?

追问

我注意到了,我在select后面加 distinct 了,是这样?

嵌套有点复杂我不太会,为什么嵌套也不会重复?

追答

有些东西用嵌套比较好理解
不会重复是因为最后结果从读者表里出

简单举个例子
你有表
id name
1 张三
2 李四
3 王五
select * from 表名 where id in (1,1,1) --这个就是id如果是1或者是1或者是1
选出来的都只有张三那条,这个跟嵌套的道理一样

追问

还是有点不太明白,谢谢你的解答

追答

就是内查询里不管有几个1
到外查询里只提取一次,这样说懂吗?

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答