鑑於此架構:MySQL查詢查找的姓名和年齡最小的員工的年齡在每個部門
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
它列出了同一部門的多個人。
我想出了一些與您的返回相同數量的行的東西。不知道什麼是更好的,但。其實這不起作用(不包括兩個拼寫錯誤)。它會爲同一部門返回多個年齡不同的人。 – Watabou 2013-03-20 18:00:20
我更新了我的答案。最後的加入應該是部門而不是員工 – 2013-03-20 18:37:16