提问者:小点点

如何选择每个标题的名字?


我使用的是Pgadmin(mysql)。 我必须为日期(第一年)打印一个名称,所以我的代码给我的是:

 "El padrino";1972
 "El padrino";1972
 "El padrino";1972
 "El resplandor";1980
 "El resplandor";1981
 "Buenos muchachos";1990
 "Buenos muchachos";1990
 "Forrest Gump";1994
 "Forrest Gump";1994
 "Tiempos violentos";1994
 "Tiempos violentos";1995
 "Los 7 pecados capitales";1995

我需要用最年长的年份来取每部电影的名字。 像这样:

 "El padrino";1972
 "El resplandor";1980
 "Buenos muchachos";1990
 "Forrest Gump";1994
 "Tiempos violentos";1994
 "Los 7 pecados capitales";1995

我正在尝试使用以下代码:

SELECT min(titulo), MIN(EXTRACT(YEAR from f.fecha))
FROM pelicula p, f_estreno_pais f 
WHERE p.id_pelicula = f.id_pelicula
GROUP BY p.id_pelicula, f.fecha
ORDER BY f.fecha;

而且,我也不用掉表了! 我必须做出一个选择,只有第一次显示的标题。


共1个答案

匿名用户

我认为您只想从GROUP BY子句中删除电影年份:

SELECT min(p.titulo), MIN(EXTRACT(YEAR from f.fecha)) min_fecha
FROM pelicula p
INNER JOIN f_estreno_pais f ON p.id_pelicula = f.id_pelicula
GROUP BY p.id_pelicula
ORDER BY min_fecha;

这样,每部电影就有一行,最小的电影年。

旁注:

>

  • 始终使用标准的显式联接(带有on关键字),而不是隐式联接(带有from子句中的逗号); 这个几十年前的老语法不应该用在新代码中

    在多表查询中,始终为所有列加上它们所属的表的前缀--这样查询就不会有歧义,并且更容易跟踪