选择对另一个属性具有最大值的属性

时间:2019-05-04 02:34:43

标签: mysql sql phpmyadmin

****编辑:我还应该考虑存在多个具有最高价值的属性的情况?

我正在尝试编写一个外部查询,该查询从内部查询中获取具有最高值的属性名称,该内部查询生成一个以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)

有一张表列出了所有属性,然后有一张表列出了共享属性(例如,联排别墅)的值,还有一张表列出了独立属性(例如,房屋)的值。

1 个答案:

答案 0 :(得分:1)

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