首页 > 解决方案 > 从多个最小值返回当前位置

问题描述

我有 4 张表,分别是教育程度、个人详细信息、当前位置和收入。教育与个人信息挂钩,个人信息与当前位置单独挂钩(不要问为什么,老DB)。收入也与个人信息有关。

我试图确定教育水平最低但收入水平最高的人目前居住在哪里。问题出现了,我有大约 30 个人,他们的教育水平(相同)最低,收入水平相同。

当前代码如下:

select  p.name,
        min(e.level),
        max(i.income),
        l.city
from    education as e
join    person_det as p
on      e.person_ID = p.ID
join    location as l
on      p.CityID = l.CityID
join    income as i
on      p.job_ID = i.job_id
Order by e.level ASC, i.income DESC;

但是,这似乎只返回 1 人,而不是我需要的所有人。

关于如何使其适用于多个标准的任何建议?

标签: mysqlsql

解决方案


由于min(e.level0). 您可以尝试按 对列表进行排序e.level ASC, i.income DESC,然后查看前几项。

否则,我认为您需要使用嵌套查询。内部查询将确定min(e.level),外部查询将找到匹配的记录min_e,按 i.income DESC 排序。除了最大 i.income 之外,很难打印其他信息。

尝试这样的事情:

select p.name, e.level, i.income, l.city
from person as p
join education as e on e.person_ID=p.ID
join income as i on p.job_ID=i.job_id
join location as l on p.CityID=l.CityID
where e.level = (select min(level) from education)
order by i.income DESC;

推荐阅读