110 votes

Comment puis-je sélectionner toutes les colonnes d'une table, plus des colonnes supplémentaires comme ROWNUM ?

En Oracle, il est possible d'exécuter une SELECT instruction qui renvoie le numéro de ligne en tant que colonne dans votre ensemble de résultats.

Par exemple,

SELECT rownum, column1, column2 FROM table

retourne:

rownum column1 column2 1 Joe Smith 2 Bob Jones

Mais je ne veux pas spécifier chaque colonne manuellement. Je veux faire quelque chose comme:

select rownum,* from table

rownum column1 column2 column3 column4 1 Joe Smith 1 2 2 Bob Jones 3 4

Des idées?

186voto

Dave Costa Points 25282

Qualifiez le * avec le nom de la table :

select rownum, table.* from table

10voto

user1121352 Points 1066

La réponse de Dave est excellente, j'aimerais simplement ajouter qu'il est également possible de le faire en plaçant le joker en tant que première colonne :

select *,rownum from table

Fonctionne, mais ce qui suit ne fonctionnera pas :

select rownum,* from table

J'ai testé sur MySQL.

1voto

Pierre Cattin Points 121

La réponse de Dave n'a pas fonctionné pour moi sur Oracle 11g (table.* sans alias). Ce qui suit a fonctionné:

sélectionner rownum, t.* de la table t

-12voto

Ziyi Wang Points 23

Malheureusement, je ne pense pas qu'il y ait un moyen de le faire, le plus simple est probablement de faire une jointure interne avec lui-même avec une table en ligne de id, count(*), et mettre une instruction de sélection externe

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