鉴于此架构:
Emp(eid: integer,ename: string,age: integer,salary: real)
Works(eid:integer,did: integer,pct_time: integer)
Dept(did:integer,budget: real,managerid:integer)
我想出了这个:
SELECT w.did, MIN(e.age) AS Youngest
FROM Works w INNER JOIN Emp e USING (eid)
GROUP BY w.did
其中列出了每个部门的最小年龄。但是,我不知道如何获取每个列出年龄的人的姓名。我不能只将 ename 添加到此查询中的 SELECT 列表中,因为这会返回错误的名称。
我刚刚尝试过这样的事情,但它不起作用。
SELECT e2.ename, e2.age, w2.did
FROM Emp e2 INNER JOIN Works w2 USING (eid),
(
SELECT w.did, MIN(e.age) AS Youngest
FROM Works w INNER JOIN Emp e USING (eid)
GROUP BY w.did
) MyTable
WHERE e2.eid = eid AND e2.age = Youngest
它列出了同一部门的多人。