我使用的是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;
而且,我也不用掉表了! 我必须做出一个选择,只有第一次显示的标题。
我认为您只想从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
子句中的逗号); 这个几十年前的老语法不应该用在新代码中
在多表查询中,始终为所有列加上它们所属的表的前缀--这样查询就不会有歧义,并且更容易跟踪