Выбор атрибута, который имеет максимальное значение для другого атрибута - PullRequest
0 голосов
/ 04 мая 2019

**** Редактировать: Как я могу также рассмотреть случай, когда существует более одного свойства с наибольшим значением?

Я пытаюсь написать внешний запрос, который получает имя свойства с наибольшим значением из внутреннего запроса, который создает таблицу с именем свойства и значением в качестве столбцов.

Внутренний запрос выводит меня примерно так:

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, выражение # 1 списка SELECT содержит неагрегированный столбец« 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 Ответ

1 голос
/ 04 мая 2019

Используйте 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
                );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...