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
它列出了同一部门的多个人。
2013-03-20
Watabou