Mysql Sql从计数正好为2的多个表中选择值
如果emp_no(员工编号)在dept_emp中正好存在2次,我将尝试从员工数据库中获取名字和姓氏 员工数据库包括:员工、部门、部门经理、部门emp、职称、工资Mysql Sql从计数正好为2的多个表中选择值,mysql,sql,join,Mysql,Sql,Join,如果emp_no(员工编号)在dept_emp中正好存在2次,我将尝试从员工数据库中获取名字和姓氏 员工数据库包括:员工、部门、部门经理、部门emp、职称、工资 USE employees; SELECT emps.first_name,emps.last_name FROM employees emps INNER JOIN employees.dept_emp dm ON emps.emp_no = dm.emp_no INNER JOIN employees.titles t ON
USE employees;
SELECT emps.first_name,emps.last_name
FROM employees emps INNER JOIN
employees.dept_emp dm
ON emps.emp_no = dm.emp_no INNER JOIN
employees.titles t
ON t.emp_no = emps.emp_no INNER JOIN
employees.departments d
ON d.dept_no = dm.dept_no
HAVING COUNT(dm.emp_no) = 2
来自部门emp的示例,其中第一个值为emp编号:
(10045,'d004','1996-11-16','9999-01-01'),
(10046,'d008','1992-06-20','9999-01-01'),
(283344,'d001','1996-05-08','1997-11-25'),
(283344,'d009','1997-11-25','9999-01-01'),
员工表:
CREATE TABLE employees (
emp_no INT NOT NULL,
birth_date DATE NOT NULL,
first_name VARCHAR(14) NOT NULL,
last_name VARCHAR(16) NOT NULL,
gender ENUM ('M','F') NOT NULL,
hire_date DATE NOT NULL,
PRIMARY KEY (emp_no)
部门emp表:
CREATE TABLE dept_emp (
emp_no INT NOT NULL,
dept_no CHAR(4) NOT NULL,
from_date DATE NOT NULL,
to_date DATE NOT NULL,
FOREIGN KEY (emp_no) REFERENCES employees (emp_no) ON DELETE CASCADE,
FOREIGN KEY (dept_no) REFERENCES departments (dept_no) ON DELETE CASCADE,
PRIMARY KEY (emp_no,dept_no)
所需输出:名字和姓氏如果emp\u no在dept\u emp中正好出现两次,则缺少一个
GROUP BY
子句
SELECT emps.first_name,emps.last_name
FROM employees emps
INNER JOIN dept_emp dm
ON emps.emp_no = dm.emp_no
GROUP BY dm.emp_no, emps.first_name, emps.last_name
HAVING COUNT(dm.emp_no) = 2
“期望输出:如果emp\u no在dept\u emp中正好出现两次,那么名字和姓氏”您是指两个不同的emp\u no编号还是无关紧要?@srp1908您可能需要使用
HAVING COUNT(DISTINCT dm.emp\u no)=2
ifdm.emp\u no
需要是唯一的。@RaymondNijland我认为OP是在寻找那些特定的emp\u no
在dept\emp
表中完全重复的情况。“如果emp编号(员工编号)在部门emp中正好存在2次。”