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 排序。

  • 相关阅读:
    程序员的基本修养之二
    jQuery学习之二
    面向对象程序的设计模式
    Mysql的复杂语句
    养成良好的做事风格
    前端模板学习bootstrap
    23. Merge k Sorted Lists
    953. Verifying an Alien Dictionary
    Daily Coding Problem: Problem #541
    396. Rotate Function
  • 原文地址:https://www.cnblogs.com/john1015/p/13710648.html
Copyright © 2011-2022 走看看