mysql内连接的复杂应用

查找所有员工自入职以来的薪水涨幅情况,给出员工编号emp_noy以及其对应的薪水涨幅growth,并按照growth进行升序
CREATE TABLE `employees` (
`emp_no` int(11) NOT NULL,
`birth_date` date NOT NULL,
`first_name` varchar(14) NOT NULL,
`last_name` varchar(16) NOT NULL,
`gender` char(1) NOT NULL,
`hire_date` date NOT NULL,
PRIMARY KEY (`emp_no`));
CREATE TABLE `salaries` (
`emp_no` int(11) NOT NULL,
`salary` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`from_date`));

用内连接实现:

select a.emp_no, (b.salary - c.salary) as growth
from
    employees as a
    inner join salaries as b
    on a.emp_no = b.emp_no and b.to_date = ‘9999-01-01‘
    inner join salaries as c
    on a.emp_no = c.emp_no and a.hire_date = c.from_date
order by growth asc

时间: 2024-12-13 07:38:50

mysql内连接的复杂应用的相关文章

mysql学习笔记(七)—— MySQL内连接和外连接

    MySQL内连接(inner join on) MySQL的内连接使用inner join on,它的效果跟使用where是一样的,如果联结的是两个表,那么需要左右的条件或者说字段是需要完全匹配的. 来看个例子:有两张表customers客户表和orders订单表,外键是cust_id,我们需要知道哪些客户有订单 select customers.cust_id,orders.order_num from customers , orders where customers.cust_i

MySQL内连接和外连接

INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录. LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录. RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录. MySQL内连接(inner join on) MySQL的内连接使用inner join on,它的效果跟使用where是一样的,如果联结的是两个表,那么需要左右的条件或者说字段是需要完全匹配的. 来看个例子:有两张表cust

mysql 内连接 左连接 右连接 外连接

mysql> desc student;+-------+-------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-------+-------------+------+-----+---------+-------+| ID | int(11) | NO | PRI | 0 | || NAME | varchar(16) | YES | | NULL | || A

MySQL 内连接与外连接

1.内连接 MySQL中,join,cross join,inner join 是等价的. 2.外连接 2.1 左外连接 left join 2.2 右外连接  right join 3.连接条件 使用on关键字来设定连接条件,也可使用where来代替. 通常使用on关键字来设定连接条件, 使用where关键字来进行结果集记录的过滤. 原文地址:https://www.cnblogs.com/thiaoqueen/p/8451913.html

mysql 内连接、左连接、右连接

记录备忘下,初始数据如下: DROP TABLE IF EXISTS t_demo_product; CREATE TABLE IF NOT EXISTS t_demo_product( proid int(20), proname varchar(20), price int(10), PRIMARY KEY(proid) )ENGINE=InnoDB DEFAULT CHARSET=gbk; DROP TABLE IF EXISTS t_demo_operation; CREATE TABL

mysql内连接、左连接、右连接

内连接(INNER JOIN)(典型的连接运算,使用像   =   或   <>   之类的比较运算符).包括相等连接和自然连接. 内连接使用比较运算符根据每个表共有的列的值匹配两个表中的行 左连接(LEFT   JOIN   或   LEFT   OUTER   JOIN)是右左边表中的数据为基准,若左表有数据右表没有数据,否则显示左表中的数据右表中的数据显示为空 右连接(RIGHT  JOIN  或  RIGHT   OUTER   JOIN)是以右边表中的数据为基准,若右表有数据左表没有

mysql 内连接、外连接、自连接

一)内连接(等值连接):查询客户姓名,订单编号,订单价格 --------------------------------------------------- select c.name,o.isbn,o.price from customers c inner join orders o where c.id = o.customers_id; --------------------------------------------------- select c.name,o.isbn,o

MySQL内连接(INNER JOIN)

MySQL INNER JOIN子句介绍 MySQL INNER JOIN子句将一个表中的行与其他表中的行进行匹配,并允许从两个表中查询包含列的行记录. INNER JOIN子句是SELECT语句的可选部分,它出现在FROM子句之后. 在使用INNER JOIN子句之前,必须指定以下条件: 首先,在FROM子句中指定主表. 其次,表中要连接的主表应该出现在INNER JOIN子句中.理论上说,可以连接多个其他表. 但是,为了获得更好的性能,应该限制要连接的表的数量(最好不要超过三个表). 第三,

mysql连接内连接、左连接、右连接、全连接

联接条件可在ROM或WHERE子句中指定,建议在FROM子句中指定联接条件.WHERE和HAVING子句也可以包含搜索条件,以进一步筛选联接条件所选的行. 联接可分为以下几类: 内联接(典型的联接运算,使用像 =或<>之类的比较运算符).包括相等联接和自然联接.内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索students和courses表中学生标识号相同的所有行. 外联接. 外联接可以是左向外联接.右向外联接或完整外部联接. 在 FROM子句中指定外联接时,可以由下列