如何在 SQL 中选择 MIN() 并选择其他一些字段

时间:2021-06-26 16:06:45

标签: mysql sql

我的 actor 数据库中有一个 Movie_Info 表,其中包含 Actor_NameBirth_YearNo_Of_FilmsNo_Of_Awards 等字段。

现在我需要找到最年轻演员的姓名、当前年龄、电影数量和获奖数量

我尝试过:

SELECT
        MIN(
            YEAR(
                SYSDATE( )
            ) - Birth_Year
        ) AS age
        ,Actor_name
        ,No_Of_Films
        ,No_Of_Awards
    FROM
        actor
;

但不幸的是,它总是给出表格的第一个条目/行。我该如何解决?

2 个答案:

答案 0 :(得分:2)

MySQL 中的表是基于记录的。

查询的结果也是基于记录的,因为它们可以用作另一个查询的输入。

如果您使用像 MIN() 这样的函数,那么 MySQL 想知道它需要从哪一列获取最小值,以及该项目属于哪个组。

您没有使用GROUP BY,因此MySQL会将完整表视为1组,然后您询问某事物的MIN(...)值,该值只能是1(一)个值。这给您留下了 1(一)条记录。

答案 1 :(得分:1)

您可以使用 ORDER BYLIMIT

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