百度大厂Java面试题:sql 如何去重?

admin 09-24 架构师 暂无评论
sql 如何去重?

总的思路就是先找出表中重复数据中的一条数据,插入临时表中,删除所有的重复数据,然后再将临时表中的数据插入表中。

实现:

重复数据完全一样,使用 distinct;

id 列不同,id 类型为 int,自增字段,使用聚合函数 max 或其他;

id 列不同,id 类型为 uniqueidentifier;使用 row_number() over()和 partition

by 给每一组添加行号;将行号=1 的数据插入临时表中。


内连接和外连接的区别


自然连接:是一种特殊的等值连接,他要求两个关系表中进行比较的必须是相同的属性列,无须添加连接条件,并且在结果中消除重复的属性列。

sql 语句:Select …… from 表 1 natural join 表 2

内连接:基本与自然连接相同,不同之处在于自然连接要求是同名属性列的比较,而内连接则不要求两属性列同名,可以用 using 或 on 来指定某两列字段相同的
连接条件。

sql 语句:Select …… from 表 1 inner join 表 2 on 表 1.A=表 2.E

左外连接:是在两表进行自然连接,左边表数据行全部保留,右边表保留符合连接条件的行。

sql 语句:Select …… from 表 1 left outer join 表 2 on 表 1.C=表 2.C

右外连接:是在两表进行自然连接,右边表数据行全部保留,左边表保留符合连

接条件的行。

Select …… from 表 1 rignt outer join 表 2 on 表 1.C=表 2.C


sql 语句关键词的执行顺序?


FROM 子句, 组装来自不同数据源的数据;


WHERE 子句, 基于指定的条件对记录进行筛选


GROUP BY 子句, 将数据划分为多个分组


使用聚合函数进行计算


使用 HAVING 子句筛选分组


计算所有的表达式


使用 ORDER BY 对结果集进行排序


即:from—>where—>group by—>having—>计算所有的表达式—>orderby—>select 输出



 

转载请注明来自一个开发者的工作笔记——荷兰男孩的博客,本文标题:《百度大厂Java面试题:sql 如何去重?》

喜欢( ) 发布评论

分享到:

百度大厂Java面试题:sql 优化有哪些?如何创建索引?创建索引的原则?索引的优缺点? 返回列表