2013-05-27 2 views
0

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

SELECT 
    MAX(time) as last_time, 
    column_A, 
    column_B 
from 
    table_1 
WHERE 
    column_c='foo' 

Сво ответив со следующим сообщением об ошибке

ERROR: column "column_A" must appear in the GROUP BY clause or be used in an aggregate function

Однако его ответ следующий запрос правильно

SELECT MAX(time) as last_time from table_1 WHERE column_c='foo' 

Что я делаю неправильно?

ответ

1

В комментариях в другом ответе вы говорите, что вы хотите только одно значение:

SELECT 
    "time" as last_time, 
    column_A, 
    column_B 
from table_1 
WHERE column_c = 'foo' 
order by "time" desc 
limit 1 
1

Ссылка PostgreSQL 8.0 Group By

Все столбцы, которые не являются в совокупности функция должна быть в группе с помощью пункта, если есть столбец в агрегатной функции.

SELECT MAX(time) as last_time, column_A, column_B 
FROM table_1 WHERE column_c='foo' 
GROUP BY column_A, column_B 
+2

Вы не объяснить свой ответ, попробуйте добавить некоторый контекст, так что человек может научиться чему-то. –

+0

Спасибо, босс ... его работа .... Я помету его через несколько минут. но я столкнулся с другой проблемой. Я хотел получить только последний_time. Это означает, что запрос вернет только одно значение. но его возвращение более чем одного значения. –

+1

вы не можете получить одно значение, потому что вы используете col1 и col2 в выражении select, он всегда будет возвращать максимальное время для всех уникальных col1 и col2. Можете ли вы рассказать нам, какой результат вы хотите? , – Avi

Смежные вопросы