****编辑:我还应该考虑存在多个具有最高价值的属性的情况?
我正在尝试编写一个外部查询,该查询从内部查询中获取具有最高值的属性名称,该内部查询生成一个以propertyname和value作为其列的表。
内部查询使我得到如下信息:
propertyname | value |
-----------------------
house1 | 300000 |
house2 | 400000 |
townhouse1 | 200000 |
townhouse2 | 300000 |
我希望能够输出具有最高值的属性名称。例如在此示例中为house2。
我尝试这样做:
SELECT propertyname, MAX(value) FROM
(inner query result - this would be the table shown above)
但是在执行此操作时出现错误,如下所示:
“#1140-在没有GROUP BY的聚合查询中,SELECT列表的表达式#1包含非聚合列'averages.stname';这与sql_mode = only_full_group_by不兼容”
我想要的输出只是属性名称。
在过去的几周中,我仅被介绍给sql,因此我对 查询语言非常少。任何帮助将不胜感激。
内部查询是:
(SELECT propertyname, value FROM property P, propertylisting P
WHERE P.propertyid = PL.propertyid
UNION ALL
SELECT propertyname, value FROM property P, sharedpropertylisting SPL
WHERE P.propertyid = PSL.propertyid)
有一张表列出了所有属性,然后有一张表列出了共享属性(例如,联排别墅)的值,还有一张表列出了独立属性(例如,房屋)的值。
答案 0 :(得分:1)
使用order by
和limit
:
select t.*
from (select . . . ) t -- your query here
order by value desc
limit 1;
如果您希望所有值都具有相同的最大值,那么您可能需要重复查询:
select t.*
from (select . . . ) t
where t.value = (select value
from . . .
order by value desc
limit 1
);