• sql语句真实场景


    gitee地址
    https://gitee.com/xuthus5/Database-SQL-Actual-Combat/blob/master/README.md#https://gitee.com/link?target=https%3A%2F%2Flaunchpad.net%2Ftest-db%2Femployees-db-1%2F1.0.6
    结合sql练习来看https://wwu.lanzouq.com/itJrv04wtveb

    员工表与部门管理者表

    员工表包含所有的员工(包括姓名字段),部门管理表是只有dept_no,emo_no,from_date(入职日期),to_data(在职日期)

    获取所有非manager的员工emp_no
    1.使用两表查询

    select e.emp_no from employees e where e.emp_no not in (select emp_no from dept_manager) # 0.232秒
    

    2.使用查询内连接查询

    待续
    

    3.使用外键关联查询

    SELECT
    	dm.emp_no  # 员工表;加个命名字段就变成了6秒
    	
    FROM
    	dept_manager de
    	LEFT JOIN employees dm ON de.emp_no != dm.emp_no # 返回两表中no并不相等的字段值
    

    获取所有员工当前的manager

    部门员工和部门领导表
    一个部门员工可有多个部门领导表
    利用dept_no 关联两表之间的数据,

    SELECT
    	de.emp_no,
    	dm.emp_no manager_no 
    FROM
    	dept_emp de
    	LEFT JOIN dept_manager dm ON de.dept_no = dm.dept_no 
    WHERE
    	de.to_date = '9999-01-01' 
    	AND dm.to_date = '9999-01-01' 
    	AND de.emp_no != dm.emp_no
    

    1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。
    2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉

    获取所有部门中当前员工薪水最高的相关信息,给出dept_no, emp_no以及其对应的salary

    报错
    1054 - Unknown column 's.salary' in 'having clause'、

  • 相关阅读:
    1022 D进制的A+B
    1021 个位数统计
    L1-040 最佳情侣身高差
    Celery--基本使用
    Celery--安装
    Celery--简介
    RabbitMQ--常用命令
    RabbitMQ--RPC实现
    RabbitMQ发布订阅
    RabbitMQ基本使用
  • 原文地址:https://www.cnblogs.com/wkhzwmr/p/16276397.html
Copyright © 2020-2023  润新知