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

x4shl7ld  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(279)

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

apeeds0o1#

你可以用 UNION ,而不是 UNION ALLUNION 将消除重复项。

ehxuflar

ehxuflar2#

如果需要最短和最长年份,可以将它们放入一个查询中:

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)))

相关问题