我的 actor
数据库中有一个 Movie_Info
表,其中包含 Actor_Name
、Birth_Year
、No_Of_Films
、No_Of_Awards
等字段。>
现在我需要找到最年轻演员的姓名、当前年龄、电影数量和获奖数量。
我尝试过:
SELECT
MIN(
YEAR(
SYSDATE( )
) - Birth_Year
) AS age
,Actor_name
,No_Of_Films
,No_Of_Awards
FROM
actor
;
但不幸的是,它总是给出表格的第一个条目/行。我该如何解决?
答案 0 :(得分:2)
MySQL 中的表是基于记录的。
查询的结果也是基于记录的,因为它们可以用作另一个查询的输入。
如果您使用像 MIN()
这样的函数,那么 MySQL 想知道它需要从哪一列获取最小值,以及该项目属于哪个组。
您没有使用GROUP BY
,因此MySQL会将完整表视为1组,然后您询问某事物的MIN(...)
值,该值只能是1(一)个值。这给您留下了 1(一)条记录。
答案 1 :(得分:1)
您可以使用 ORDER BY
和 LIMIT
:
SELECT a.*
FROM actor a
ORDER BY Birth_Year DESC
LIMIT 1;
注意:如果有多个年龄相同的演员,那么您将任意获得其中一个。这与您的问题一致(要求“演员”而不是“演员”)。
如果你想要所有这些,那么一种方法是使用子查询来获取最近的出生年份:
select a.*
from actor a
where a.birth_year = (select max(a2.birth_year) from actor a2);