通过此查询,我将显示年份字段,按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)";
答案 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)))