Comment puis-je "sélectionner *" à partir d'une table dans MySQL mais omettre certaines colonnes?
J'ai une table avec les colonnes suivantes:
id,name,age,surname,lastname,catgory,active
Au lieu de: SELECT name,age,surname,lastname,catgory FROM table
Comment puis-je faire quelque chose comme ceci: SELECT * FROM table [but not select id,active]
source d'informationauteur Unix Man
Vous devez vous connecter pour publier un commentaire.
Alors que beaucoup disent que c'est la meilleure pratique pour la liste explicite de chaque colonne que vous voulez en retour, il y a des situations où vous voulez économiser du temps et de l'omettre certaines colonnes de résultats (par exemple, essais). Ci-dessous, j'ai deux options qui permettent de résoudre ce problème.
1. Créer une Fonction qui récupère la totalité de la colonne désirée noms: ( j'ai créé un schéma appelé fonctions à occuper cette fonction)
Créer et exécuter l'instruction select:
2. OU sans écrire une fonction, vous pouvez:
*Remplacer le test avec votre propre nom de schéma
**Remplacer les employés avec votre propre nom de table
***Remplacer l'âge,dateOfHire avec les colonnes que vous souhaitez omettre (vous pouvez le laisser vide pour afficher toutes les colonnes ou il suffit d'entrer un nom de colonne à omettre)
** **Vous pouvez ajuster la longueur de la varchars dans la fonction pour répondre à vos besoins
La seule façon de le faire que je sache si c'est pour énumérer chaque colonne que vous voulez... rien de négatif à filtres que je suis au courant.
vous ne pouvez pas le faire, désolé. En fait, vous shouln'pas pu le faire si l'on pouvait spécifier ces choses explicitement, c'est toujours mieux, assumer d'autres développeur ajoute un nouveau champ et votre application ne pourra pas
Vous êtes trop avancé.
La seule langue que j'ai vu à l'appui de votre syntaxe est le langage D avec son "...TOUS, MAIS ..." de construire:
Wikipédia - D Langage De Spécification
Il y a quelques implémentations de référence disponibles, mais surtout à des fins d'enseignement.
Sauf si il y a un peu spécial extension MySql vous ne pouvez pas le faire. Vous pouvez soit le faire, ou ne l'ont explicitement état de ce que vous voulez. Il est recommandé de toujours colonnes de nom, car cela va modifier la requête de comportement, même si la table sous-jacente changements.
Il n'y a pas de syntaxe SQL à l'appui:
Si vous voulez une ou plusieurs colonnes, vous devez définir explicitement la liste des colonnes que vous souhaitez.
Vous ne devriez pas être à l'aide de select * de toute façon. Énumérer les colonnes que vous voulez et seulement les colonnes que vous voulez, c'est la meilleure pratique.
SET @sql = CONCAT('SELECT ', (SÉLECTIONNEZ REMPLACER(GROUP_CONCAT(NOM_COLONNE), ',', ") à PARTIR de INFORMATION_SCHEMA.LES COLONNES OÙ TABLE_NAME = " ET TABLE_SCHEMA = "), ' DE ');
PRÉPARER stmt1 DE @sql;
EXÉCUTER stmt1;
Je suis assez certain que vous ne pouvez pas. Probablement la meilleure façon que je peux penser à est de créer
SELECT name, age, surname, lastname, category FROM table
qu'une vue de l', puis il suffit deSELECT * FROM view
. Je préfère toujours sélectionner à partir d'une vue de toute façon.Cependant, comme d'autres l'ont souligné, si une autre colonne est ajoutée à la vue de votre application peut échouer. Sur certains systèmes (PostgreSQL est un candidat) vous ne pouvez pas modifier la table sans supprimant d'abord la vue, de sorte qu'il devient un peu lourd.