【发布时间】:2020-05-18 12:50:06
【问题描述】:
我想知道是否可以让内部查询返回多个结果,然后由外部查询查询?
这是一个可重现的例子:
在此示例中,我想知道每个部门中薪水最高的员工的姓名和薪水。
CREATE TABLE Worker (
WORKER_ID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
FIRST_NAME CHAR(25),
LAST_NAME CHAR(25),
SALARY INT(15),
JOINING_DATE DATETIME,
DEPARTMENT CHAR(25)
);
INSERT INTO Worker
(WORKER_ID, FIRST_NAME, LAST_NAME, SALARY, JOINING_DATE, DEPARTMENT) VALUES
(001, 'Monika', 'Arora', 100000, '14-02-20 09.00.00', 'HR'),
(002, 'Niharika', 'Verma', 80000, '14-06-11 09.00.00', 'Admin'),
(003, 'Vishal', 'Singhal', 300000, '14-02-20 09.00.00', 'HR'),
(004, 'Amitabh', 'Singh', 500000, '14-02-20 09.00.00', 'Admin'),
(005, 'Vivek', 'Bhati', 500000, '14-06-11 09.00.00', 'Admin'),
(006, 'Vipul', 'Diwan', 200000, '14-06-11 09.00.00', 'Account'),
(007, 'Satish', 'Kumar', 75000, '14-01-20 09.00.00', 'Account'),
(008, 'Geetika', 'Chauhan', 90000, '14-04-11 09.00.00', 'Admin');
找到每个部门的最高薪水很容易:
SELECT MAX(SALARY), DEPARTMENT
FROM Worker
GROUP BY DEPARTMENT;
但是如何将获得这些薪水的员工的姓名也添加到结果中?
非常感谢!
【问题讨论】:
-
你应该在表中存储部门ID,部门表的外键。
-
为什么在标题中特别提到了相关子查询?
-
@GordonLinoff 这不是这个吗?如果没有,很高兴改变它。
-
@jarlh 好的,所以这将是表设置的问题(我自己没有这样做),而不是我不正确地查询数据的问题?
-
@seabass20 。 . .有很多方法可以解决这个问题。相关子查询只是一种解决方案。
标签: mysql sql subquery correlated-subquery