mysql - 选择对另一个属性具有最大值的属性
问题描述
**** 编辑:我如何还考虑有多个属性具有最高价值的情况?
我正在尝试编写一个外部查询,该查询从内部查询中获取具有最高值的属性名,该内部查询生成一个以属性名和值作为列的表。
内部查询让我得到这样的东西:
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)
一张表列出所有房产,然后一张表列出共享房产(例如联排别墅)的价值,以及一张列出独立房产(例如房屋)的价值。
解决方案
使用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
);
推荐阅读
- c - 有没有办法在找到句点 (.) 之前读取文件流。然后重复?
- android - 不能将 Class.forName() 与 v4.app.Fragment 一起使用
- json - “不正确的 JSON 格式”
- azure - 如何在 Azure Functions 消费计划中打开 Kudu 控制台?
- android - GSON 未在发布模式下将 JSON 数组转换为 Java 对象数组
- python - 如何在python中访问csv文件中的某个条目?
- javascript - 在联系表 7 中上传进度条
- c# - 对于 UInt64,值要么太大要么太小。
- python - 当我单击第一个列表小部件项目时如何更改第二个列表小部件的项目
- c++ - 在保持默认 minimumSizeHint 行为的同时设置 QPushButton 的最小宽度