第一条记录和最后一条查询

时间:2020-06-22 02:25:29

标签: mysql sql

通过此查询,我将显示年份字段,按ASC顺序的第一个记录和按DESC顺序的最后一个记录。

如果年份字段不同,效果很好

示例:

1960-1970

但如果字段相同

示例:

1960

我看到重复的

1960年-1960年

我只想看一次

1960

怎么办?

$query = "(SELECT 
year as year_asc
FROM film_actor 
INNER JOIN film ON film_actor.film_id = film.film_id 
INNER JOIN actor ON film_actor.actor_id = actor.actor_id
WHERE film_actor.actor_id = $actor_id
ORDER BY year ASC
LIMIT 1)

UNION ALL

(SELECT 
year as year_desc
FROM film_actor 
INNER JOIN film ON film_actor.film_id = film.film_id 
INNER JOIN actor ON film_actor.actor_id = actor.actor_id
WHERE film_actor.actor_id = $actor_id
ORDER BY year DESC
LIMIT 1)";

2 个答案:

答案 0 :(得分:1)

您可以使用UNION而不是UNION ALL,因为UNION可以消除重复项。

答案 1 :(得分:0)

如果需要最小和最大年份,可以将它们放在一个查询中:

SELECT MIN(year) as min_year, MAX(year) as max_year
FROM film_actor fa JOIN
     film f
     ON fa.film_id = f.film_id JOIN
     actor a
     ON fa.actor_id = a.actor_id
WHERE fa.actor_id = $actor_id;

如果您想使用单个列(可能带有连字符),则可以使用:

SELECT CONCAT_WS('-', MIN(YEAR), NULLIF(MAX(YEAR), MIN(YEAR)))