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

Existe-t-il un moyen plus simple sans imbriquer les sélections?Sélectionner la ligne entière en fonction de la valeur maximale d'un champ - sans imbrication

Faire quelque chose comme cela se traduit aussi par une erreur:

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

Notez également: 'order' pourrait être un mot-clé réservé dans votre style SQL. – mindandmedia

Répondre

5

Il y a deux approches, en fonction de votre Besoins.

Si vous n'avez besoin que d'une ligne, vous pouvez trier la colonne qui vous intéresse et renvoyer la ligne supérieure. Par exemple:

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

si vous utilisez SQL Server ou

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

si vous utilisez MySQL. Si vous avez besoin d'une ligne par groupe, vous devez généralement utiliser une sous-requête ou une jointure.

+0

Cela suppose bien entendu SQL Server non? mySql et Postgres utilisaient 'LIMIT 1' et Oracle utilisait' WHERE ROWNUM = 1' –

+0

@Mike - bon point, j'ai ajouté la version de MySQL. –

+0

Super juste ce que je cherchais. Merci Matt et Mike. J'utilise Oracle donc la requête était - sélectionnez * de 'order'where rownum = 1 par last_modified_date desc – SoltanG

0
select TOP 1 * from [order] order by lastModifiedDate desc 
Questions connexes