Mysql 从多个最小值返回当前位置
我有4张表格,包括教育程度、个人信息、当前位置和收入。教育与个人信息相关联,个人信息与当前位置相关联。不要问为什么,老DB。收入也与个人信息有关 我试图确定教育程度最低但收入最高的人目前居住在哪里。问题是,我有大约30人的教育水平最低,收入水平也相同 目前的代码如下:Mysql 从多个最小值返回当前位置,mysql,sql,Mysql,Sql,我有4张表格,包括教育程度、个人信息、当前位置和收入。教育与个人信息相关联,个人信息与当前位置相关联。不要问为什么,老DB。收入也与个人信息有关 我试图确定教育程度最低但收入最高的人目前居住在哪里。问题是,我有大约30人的教育水平最低,收入水平也相同 目前的代码如下: select p.name, min(e.level), max(i.income), l.city from education as e join person_d
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;
然而,这似乎只返回一个人,而不是我需要的所有人
有没有关于如何使用多个标准的建议?由于mine.level0,您只能得到一个答案。您可以尝试按e.level ASC,即income DESC对列表进行排序,并查看前几个项目 否则,我认为您需要使用嵌套查询。内部查询将确定mine.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;
您的查询没有分组依据。我建议您尝试在ORDER BY之前按p.name、l.city添加GROUP,并删除分号;in on p.job\u ID=i.job\u ID;。有没有关于如何编写嵌套查询的建议?