数据库题:查出来既学了课程号1又学了课程号2的学生学号

您所在的位置:网站首页 1004的英语怎么写 数据库题:查出来既学了课程号1又学了课程号2的学生学号

数据库题:查出来既学了课程号1又学了课程号2的学生学号

2024-01-15 14:21| 来源: 网络整理| 查看: 265

很显然,我这个简单多了(从学生表查姓名这种事下文就不提了,我们只关注查学号这件事),但是哦,我猛地一想,不对劲呀,为什么没人想到我这个呢,极度不自信的我接着搜,根据我搜出来的结果,应该是效率太低。效率低主要体现在查找域过大。之前看到过说from和join的区别的文章,如果表中有5条数据,from这个表两次,这样搞出来就是从5*5=25个数据中查的(两张表一起查就是一个笛卡尔集的形式)。如果换成join,以此题为例两个相同的表就是5+5=10条数据(inner,left,right都是一样的,毕竟两张表都一模一样)。 而别人那种嵌套的写法第一次从5个人中查cno=3的人,第二次从中查cno=2的人,其实吧,效率也就那样(毕竟查询了两次),写着还麻烦,因此我绝对是很聪明的那个人,只要改成join就好了 -_-嘻嘻。

然后回想到一个知识点,关于group by 的。真的好久没用过了,看到上图那个人的代码用了,看了一下,应该是起到去重的作用,以免重复出现同一名学生的信息。害,为啥我想到去重是用DISTINCT呢。好烦,我感觉group by好没用啊,所以我又去搜了一下,groupBy和distinct区别,好叭,group by全面碾压distinct,甚至还有文章告诉我distinct是性价比最低的开销最大的函数,好叭,是我low了。我去代码实践了一下,发现如果distinct只能写在开头字段上(比如id 和name 只能写在id前面,写在name前面就会报错),这样写的意思是id和name同时重复才会被查重,如果 有个性化的需求,比如只想对name去重,id可以重复,那就乖乖的用group by就好了。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3