我有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个人,而不是我需要的所有人。
关于如何使它符合多个条件的任何建议?
答案 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;