数据库练习题

snopnojno
s1p1j1
s1p1j3
s1p1j4
s1p2j2
s2p3j1
s2p3j2
s2p3j4
s2p3j5
s2p5j1
s2p5j2
s3p1j1
s3p3j1
s4p5j1
s5p6j2
s5p6j4

以上是spj表。

sno是供应商号,pno是零件号,jno是项目号,spj这个表内容是供应情况,每个供应商供应多种零件(都在此表中体现),每种零件可由多个供应商提供(都在此表中体现),每个项目使用多种零件(都在此表中体现)。

 

查询:至少使用了供应商s5所供应全部零件的项目号。

要求用一句查询写出,当然可以用嵌套查询,也可以用EXCEPT等等。

想了半天也想不出,后来到CSDN上去求助,才得到如下答案。

select jno
from spj
where sno='s5'
group by jno
having count(distinct pno)=(
select count(distinct pno)
from spj
where sno='s5'
)

初看此应答不以为然,心想这题跟count有什么关系,又复习了一会儿后,猛然一激灵……对阿,对这题来说这种方法才是适用而且简单的查询

后有感叹,不写查询已久矣……全才难做啊

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值