相关疑难解决方法(0)

MySQL:选择N行,但在一列中只有唯一值

鉴于此数据集:

ID  Name            City            Birthyear
1   Egon Spengler   New York        1957
2   Mac Taylor      New York        1955
3   Sarah Connor    Los Angeles     1959
4   Jean-Luc Picard La Barre        2305
5   Ellen Ripley    Nostromo        2092
6   James T. Kirk   Riverside       2233
7   Henry Jones     Chicago         1899
Run Code Online (Sandbox Code Playgroud)

我需要找到3个最老的人,但每个城市只有一个.

如果它只是三个最古老的,它将是......

  • 亨利琼斯/芝加哥
  • 麦克泰勒/纽约
  • Egon Spengler /纽约

然而,由于Egon Spengler和Mac Taylor都位于纽约,Egon Spengler将退出,而下一个(Sarah Connor /洛杉矶)将会进入.

优雅的解决方案?

更新:

目前PConroy的变体是最好/最快的解决方案:

SELECT P.*, COUNT(*) AS ct
   FROM people P
   JOIN (SELECT MIN(Birthyear) AS Birthyear
              FROM people 
              GROUP by City) P2 …
Run Code Online (Sandbox Code Playgroud)

mysql sql unique aggregate-functions min

34
推荐指数
1
解决办法
7万
查看次数

标签 统计

aggregate-functions ×1

min ×1

mysql ×1

sql ×1

unique ×1