从多个最小值返回当前位置

时间:2019-05-03 21:20:39

标签: mysql sql

我有4张桌子,分别列出教育程度,个人详细信息,当前位置和收入。教育与个人详细信息相关联,个人详细信息与当前位置单独相关(不要问为什么,旧数据库)。收入也与个人详细信息相关联。

我正在尝试确定教育水平最低但收入最高的人目前居住的地方。问题出在,我大约有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个人,而不是我需要的所有人。

关于如何使它符合多个条件的任何建议?

1 个答案:

答案 0 :(得分:1)

由于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;