zoukankan      html  css  js  c++  java
  • sql算法练习——两个表查找当前薪水详情以及部门编号

    题目:

    查找各个部门当前(dept_manager.to_date='9999-01-01')领导当前(salaries.to_date='9999-01-01')薪水详情以及其对应部门编号dept_no
    (注:请以salaries表为主表进行查询,输出结果以salaries.emp_no升序排序,并且请注意输出结果里面dept_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`));

    CREATE TABLE `dept_manager` (
    `dept_no` char(4) NOT NULL, -- '部门编号'
    `emp_no` int(11) NOT NULL, --  '员工编号'
    `to_date` date NOT NULL,
    PRIMARY KEY (`emp_no`,`dept_no`));

    代码:

    1 select salaries.*, dept_manager.dept_no from `salaries`
    2 join `dept_manager`
    3 on salaries.emp_no = dept_manager.emp_no
    4 where salaries.to_date = '9999-01-01'
    5 and dept_manager.to_date = '9999-01-01'
    6 order by salaries.emp_no;

    笔记:

    join on 的条件一定是两个表中都有的主键。

    另外,本身表就是具有顺序的,所以在索引的时候就不需要再进行 order by 排序。

  • 相关阅读:
    Fleury算法
    2012 MultiUniversity Training Contest 2
    高斯若尔当消元法(线性代数)
    hdu4307(最小割)
    hdu4305(生成树计数)
    hdu4318(最短路)
    hdu4309(网络流)
    hdu4313(生成树)
    生成树计数
    MYSQL 远程登录及常用命令
  • 原文地址:https://www.cnblogs.com/john1015/p/13710648.html
Copyright © 2011-2022 走看看