MySQL数据库中去重与连接查询的方法(mysql,mysql数据库,开发技术)

时间:2024-04-28 22:52:49 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    MySQL%E6%95%B0%E6%8D%AE%E5%BA%93%E4%B8%AD%E5%8E%BB%E9%87%8D%E4%B8%8E%E8%BF%9E%E6%8E%A5%E6%9F%A5%E8%AF%A2%E7%9A%84%E6%96%B9%E6%B3%95

1.去重

2.连接查询

使用where进行多表连接查询

内连接 - 等值连接

内连接 - 非等值连接

内连接 - 自连接

外连接 - 左右外连接

三表连接

示例表内容参考此文章

有些 MySQL 数据表中可能存在重复的记录,有些情况我们允许重复数据的存在,但有时候我们也需要删除这些重复的数据。

例如:去重显示岗位信息:

另一个示例:联合去重,查找部门和岗位的独有信息:

另一个示例:现在我们想统计一下工作岗位的数量,结合使用count函数:

我们已经学会了如何在一张表中读取数据,这是相对简单的,但是在真正的应用中经常需要从多个数据表中读取数据。

JOIN 按照功能大致分为如下三类:

INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。

LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。

RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。

多表连接的机制是:从其中一个表中取出每一条数据,从另一个表中的数据行进行匹配。这就涉及到了效率控制问题

现在我们来演示一个例子:取出每个员工的名字和部门名字:

上面的sql语句实际上效率很低,我们尝试进行优化(给表起别名):(sql92语法)

注意:表的连接次数越多,效率越低,请尽量减少表的连接次数!

还是上面的例子,取出每个员工的名字和部门名字:(sql99语法)

内连接,我们使用inner

sql99的优点是:表的连接是独立的,不占用where的位置。使sql语句整体更加清晰

案例:找出每个员工的薪资等级,要求显示员工名,薪资,薪资等级

案例:查询员工的上级领导,要求显示员工名和对应的领导名

我们可以发现,员工和领导的关系在一张表中,此时需要用到自连接(技巧:一张表看成两张表)

外连接与内连接的区别是,外连接没有匹配成功的某一个表的记录也会被取出

案例:查找员工的部门信息。要求部门即使没有员工也要查出

同样的,如果是左外连接,将查询出左表的全部数据,使用left join关键字即可

外连接的查询结果条数一定是 >= 内连接的查询结果条数

更为复杂的情况是,群表连接

我们来看一个案例:

找出每个员工的部门名称及工资等级。要求显示员工名,部门名,薪资,薪资等级

再来看一个更复杂的情况:

找出每个员工的部门名称及工资等级及领导名称。要求显示员工名,部门名,领导名,薪资,薪资等级

本文:MySQL数据库中去重与连接查询的方法的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:如何使用JQuery实现简单瀑布流布局下一篇:

3 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18