167 votes

Comment sélectionner une seule ligne d'oracle sql?

Je souhaite utiliser la syntaxe Oracle pour sélectionner une seule ligne de la table DUAL . Par exemple, je veux exécuter cette requête :

 SELECT user 
  FROM DUAL

... et il aurait, genre, 40 disques. Mais je n'ai besoin que d'un seul enregistrement. ...ET, je veux y arriver sans clause WHERE

J'ai besoin de quelque chose dans le champ table_name tel que :

 SELECT FirstRow(user) 
  FROM DUAL

214voto

mindvirus Points 1088

Vous utilisez ROWNUM.

c'est à dire.

 SELECT user FROM Dual WHERE ROWNUM = 1

http://docs.oracle.com/cd/B19306_01/server.102/b14200/pseudocolumns009.htm

81voto

mancini0 Points 31

Cette syntaxe est disponible dans Oracle 12c :

 select * from some_table fetch first 1 row only;
select * from some_table fetch first 1 rows only;
select * from some_table fetch first 10 row only;
select * from some_table fetch first 10 rows only;

^^Je voulais juste démontrer que soit la ligne, soit les lignes (au pluriel) peuvent être utilisées quelle que soit la pluralité du nombre de lignes souhaité.)

14voto

nous avons 3 choix pour obtenir la première ligne dans la table Oracle DB.

1) select * from table_name where rownum= 1 est le meilleur moyen

2) select * from table_name where id = ( select min(id) from table_name)

3)

 select * from 
    (select * from table_name order by id)
where rownum = 1

10voto

Fuat Points 13

La réponse est:

Vous devez utiliser la requête imbriquée comme :

 SELECT *
FROM ANY_TABLE_X 
WHERE ANY_COLUMN_X = (SELECT MAX(ANY_COLUMN_X) FROM ANY_TABLE_X) 

=> En PL/SQL "ROWNUM = 1" n'est PAS égal à "TOP 1" de TSQL.

Vous ne pouvez donc pas utiliser une requête comme celle-ci : "select * from any_table_x where rownum=1 order by any_column_x ;" Parce qu'oracle obtient la première ligne puis applique l'ordre par clause.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X