Oracle SQL n derniers enregistrements
j'ai lu des tonnes d'articles concernant les n derniers enregistrements dans Oracle SQL en utilisant rownum de fonctionnalités, mais sur mon cas il ne me donne pas les lignes correctes.
J'ai 3 colonnes dans ma table: 1) message (varchar), mes_date (date) et mes_time (varchar2).
À l'intérieur permet de dire il y a 3 dossiers:
Hello world | 20-OCT-14 | 23:50
World Hello | 21-OCT-14 | 02:32
Hello Hello | 20-OCT-14 | 23:52
Je veux obtenir les 2 derniers enregistrements commandés par sa date et de l'heure (première rangée la plus ancienne, et la seconde, le plus récent date/heure)
je suis l'aide de cette requête:
SELECT *
FROM (SELECT message
FROM messages
ORDER
BY MES_DATE, MES_TIME DESC
)
WHERE ROWNUM <= 2 ORDER BY ROWNUM DESC;
Au lieu de s'ligne #3 en première et en deuxième ligne #2-je obtenir la ligne n ° 1 et ensuite la ligne #3
Que dois-je faire pour obtenir les plus anciennes dates/heures sur le dessus par le plus récent?
- Pouvez-vous poster les résultats de "select to_char(mes_date," MM/DD/YYYY HH24:MI:SS') from messages where rownum < 3" ? un jour de la structure des données détient l'heure... et j'espère que vous avez réellement magasin de il y, et que votre vie serait plus facile
Vous devez vous connecter pour publier un commentaire.
Peut-être que cela aide:
Je suis vraiment désolé de te décevoir mais dans Oracle il n'y a pas une telle chose comme "les deux derniers enregistrements".
La structure de la table n'a pas allouer de données, à la fin, et ne tient pas une propriété visible de l'époque (la seule fois être tenu pour seul but de "flashback requêtes" - la fourniture de résultats de point dans le temps, comme l'heure de la requête commencé...).
Le dernier enregistrement inséré n'est pas quelque chose que vous pouvez faire une requête à l'aide de la base de données.
Que pouvez-vous faire? Vous pouvez créer un déclencheur qui commande les enregistrements insérés à l'aide d'une séquence, puis sélectionnez basé sur elle (donc
SELECT * from (SELECT * FROM table ORDER BY seq DESC) where rownum < 3
) - qui permettra d'assurer la commande que si la séquence de la valeur du CACHE est de 1.Avis que si la colonne qui contient le message date n'a pas beaucoup d'événements en une seconde, vous pouvez utiliser cette colonne, que l'autre solution proposée - par exemple, si vous avez plus de 2 événements qui arrivent dans un second, la requête ci-dessus vous donnera aléatoire de deux albums, et pas les deux derniers.
NOUVEAU - Oracle ne sera pas queryable pour les deux dernières lignes insérées depuis sa structure de données ne sont pas gérées ordres d'insertions, et la commande de vous voir lors de l'exécution "SELECT *" est indépendante de la insère dans certains cas spécifiques.
Si vous avez des questions concernant une partie de cette réponse post ici, et je vais me concentrer sur l'explication plus en profondeur.
date
OP utilise?BY MES_DATE, MES_TIME DESC