2012-02-24 3 views
2
select * 
from webOrders 
where lastModifiedDate in (select max (lastModifiedDate) from webOrders) 

Есть ли более простой способ, не вложив в него выбор?Выберите целую строку, основанную на максимальном значении поля - без вложенности

Делая какие-нибудь, как это также приводит к ошибке:

select id, amount, quantity, max(lastModifiedDate) from webOrders. 
+1

также примечание: 'order' может быть зарезервированным ключевым словом в вашем вкусе sql. – mindandmedia

ответ

5

Есть несколько подходов, в зависимости от вашего необходимо.

Если вам нужна только одна строка, возвращаемая, вы можете отсортировать интересующий столбец и вернуть верхнюю строку. Например:

select top 1 * 
from `order` 
order by last_modified_date desc 

, если вы используете SQL Server или

select * 
from `order` 
order by last_modified_date desc 
limit 1 

если вы используете MySQL.

Если вам нужно получить одну строку для каждой группы, тогда вам обычно приходится использовать подзапрос или соединение.

+0

Это, конечно, предполагает SQL Server? mySql и Postgres будут использовать 'LIMIT 1', а Oracle будет использовать' WHERE ROWNUM = 1' –

+0

@Mike - хорошая точка, я добавил версию MySQL. –

+0

Отлично, что я искал. Спасибо, Мэтт и Майк. Я использую Oracle, поэтому запрос был выбран - выберите * из 'order'where rownum = 1 order by last_modified_date desc – SoltanG

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