首页 > 解决方案 > 选择对另一个属性具有最大值的属性

问题描述

**** 编辑:我如何还考虑有多个属性具有最高价值的情况?

我正在尝试编写一个外部查询,该查询从内部查询中获取具有最高值的属性名,该内部查询生成一个以属性名和值作为列的表。

内部查询让我得到这样的东西:

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)

一张表列出所有房产,然后一张表列出共享房产(例如联排别墅)的价值,以及一张列出独立房产(例如房屋)的价值。

标签: mysqlsqlphpmyadmin

解决方案


使用order bylimit

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
                );

推荐阅读