La base de données Oracle: comment sélectionner tous, mais le retour de certaines colonnes en premier?
Fond
J'ai une base de données oracle table avec un grand nombre de colonnes que je suis de l'exécution de certaines requêtes.
Je ne sais pas exactement quelles sont les données que je cherche dans ma requête, j'ai donc envie de retourner toutes les colonnes, mais je ne veux pas de la chasse et de picorer pour les colonnes que je connais sont significatives.
Question
La supposition d'un tableau (tableau 1) avec la Colonne A Colonne B Colonne C....Colonne Z --
Est-il un moyen de disent en substance ", Sélectionnez la Colonne C, Colonne J, la Colonne F, Colonne Q, puis le reste des colonnes De la Table 1" ?
Choses que j'ai Essayé de
En gardant à l'aide de pseudo-sql, en cours d'Exécution:
Sélectionnez La Colonne C, Colonne J, La Colonne F, Table1.* from Table1
Ne vous aide pas, parce que même si je ne dérange pas les doublons, oracle voit comme une manière ambiguë, les colonnes définies et donc renvoie une erreur.
Pourquoi ne vous contentez pas d'énumérer les colonnes dans l'ordre souhaité explicitement (
SELECT C, J, F, A, B, D, ..., Z
)?Non il ne marche pas comme ça... U pour sélectionner toutes les colonnes ur souhaité ou de ne SÉLECTIONNER *
Pouvez-vous nous donner un exemple? Je ne vois rien dans votre requête à cause de la difficulté de la base de données. Si vous êtes à la jointure de tables sans aliasing colonnes, alors je pourrais voir quelque chose à propos de l'ambiguïté de la colonne definnition... avez-vous une erreur? S'il vous plaît poster!
Non, vous pouvez faire les deux. La sélection des colonnes, puis en utilisant
*
OriginalL'auteur SeanKilleen | 2012-03-15
Vous devez vous connecter pour publier un commentaire.
Il n'est pas facile et agréable façon de le faire, d'autres que la spécification de chaque colonne.
Mais si vous n'avez pas l'esprit de l'doublons et vous n'avez pas de soins sur les noms de colonne, vous pourriez alias de ces colonnes:
Juste pour la démonstration, je l'alias de la table Table1. Vous pouvez omettre le
as
mot-clé, mais je pense qu'il fait un peu plus lisible.Ne note que bien que ces colonnes ne sont pas du tout difficile pour Oracle requête, ils ne générer du trafic supplémentaire. Pour les tests, cette solution est très bien, mais dans le code de production, j'opterais pour sélectionner uniquement les colonnes dont vous avez besoin, et uniquement sélectionner une seule fois. C'est seulement un peu de travail supplémentaire. Après tout, combien de colonnes avez-vous? 🙂
Oui, vous pouvez. Pourquoi pensez-vous que vous ne pouvez pas?
Je viens de le tester sur une base de données 10G. Est-ce un paramètre quelque part qui permet cela ? Êtes-vous sur 11G ? Je reçois
ORA-00936: missing expression
et il points juste avant l'étoile dans l'select project_id, * from pa_projects_all ;
Je pense que vous voulez dire que vous ne pouvez pas utiliser
*
par lui-même. Vous pouvez cependant mettre le nom de la table avant (select Table1 X as X2, Table1.* from Table1
), de sorte que vous n'avez pas besoin de l'alias de la table. Vous avez raison, vous avez besoin de spécifier la table d'une manière ou d'une autre, si vous allez utiliser l'astérisque, mais ce n'était pas vraiment la question. OP utilise déjà ce dans l'exemple de code dans la question.Oh! Le nom de la table est comme un super-alias 🙂 Oui je voulais dire que vous ne pouvez pas utiliser la
*
seul.OriginalL'auteur GolezTrol
Vous pouvez contourner le problème, cependant, en utilisant un alias pour les colonnes qui vous sont spécifiquement sélection. Par exemple
pour s'assurer qu'il n'existe pas de même nom des colonnes.
OriginalL'auteur Justin Cave