如何才能只打印一个名字的标题?

问题描述 投票:0回答:1

我使用的是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;
python sql video min
1个回答
0
投票

你没有提到你的数据库系统。如果有windwos函数,这将是一种方式。

准备一个普通的表表达式(cte)。你的表有列 "titulo "和 "fecha"。将它们按 "titulo "的 "fecha "编号,并从你的cte中取第一个数字。

对于SQL-Server来说,语法是这样的

;with my_cte as (
   select
      titulo,
      fecha,
      row_number() over (partition by titulo order by fecha) n
   from your_table
 )
select *
from my_cte
where n = 1

其他数据库系统也类似。"混合 "表叫做 "连接两个表"。你的语法是非常老派的。如果你的数据库系统支持,你最好使用现代的join语法。

对于SQL-Server 2016来说,这将是一个完整的运行示例,什么会给你预期的结果。

drop table if exists #t1
create table #t1 (titulo varchar(255), fecha int)

insert  #t1 values
 ('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)


 ;with my_cte as (
   select
      titulo,
      fecha,
      row_number() over (partition by titulo order by fecha) n
   from #t1
 )
select *
from my_cte
where n = 1
order by 1

0
投票

这听起来就像PostgreSQL的 SELECT DISTINCT ON 查询。

SELECT
    DISTINCT ON (titolo)
    titolo, ano
    ORDER BY titolo, ano;

这个的缺点是它是PostgreSQL专用的扩展,它不能移植到其他数据库中;根据你的情况,这可能或不重要。


0
投票
 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;

这就是解决方案!

© www.soinside.com 2019 - 2024. All rights reserved.