1143 votes

SQL exclure une colonne en utilisant SELECT * [sauf colonneA] de tableA ?

Nous savons tous que pour sélectionner toutes les colonnes d'un tableau, nous pouvons utiliser

SELECT * FROM tableA

Existe-t-il un moyen d'exclure une ou plusieurs colonnes d'un tableau sans spécifier toutes les colonnes ?

SELECT * [except columnA] FROM tableA

Le seul moyen que je connaisse est de spécifier manuellement toutes les colonnes et d'exclure la colonne indésirable. Cela prend beaucoup de temps et je cherche donc des moyens d'économiser du temps et des efforts sur ce point, ainsi que sur la maintenance future si la table a plus ou moins de colonnes.

Merci !

58 votes

Il serait très pratique de disposer de cette fonctionnalité, non pas pour la mettre dans le code de production, mais à des fins de dépannage. Exemple : J'ai une table qui a plusieurs colonnes que j'interroge, mais je veux rapidement omettre une ou deux colonnes de texte.

0 votes

J'en avais besoin lorsque je travaillais avec openquery (bien que j'aie besoin de la fonctionnalité dans MySQL plutôt que dans SQL Server). Je devais interroger une base de données MySQL à l'aide de SQL Server. Parce qu'une table MySQL avait des colonnes de caractères de largeur fixe, je ne pouvais pas utiliser une fonction SELECT * (OLE DB a du mal à les mettre en correspondance). Je n'ai pas pu spécifier les bonnes colonnes car je n'avais pas d'accès direct à la base de données MySQL, mais SQL Server a eu la gentillesse de m'informer des noms des colonnes de caractères à largeur fixe...

9 votes

J'aimerais ajouter une autre raison de le faire : SELECT DISTINCT * sauf pour la colonne clé qui doit fonctionner sans dupliquer les lignes que quelqu'un d'autre a créées.

-1voto

Jagat Points 713

Si vous utilisez mysql-workbench, vous pouvez faire un clic droit sur l'explorateur de tables et cliquer sur "Send to SQL editor->Select all statement".

Il envoie une instruction comme "Select col1, col2,... from tablename".

Puis supprimez ceux dont vous n'avez pas besoin.

0 votes

Étiqueté : sql server

-1voto

user3904583 Points 11

Cela ne permettra pas de gagner du temps lors du chargement à partir de la base de données. Mais, vous pouvez toujours désactiver la colonne que vous ne voulez pas dans le tableau où elle est placée. J'avais plusieurs colonnes dans un tableau mais je n'en voulais pas une en particulier. J'étais trop paresseux pour les écrire toutes dans l'instruction SELECT.

$i=0;
$row_array = array();

while($row = mysqli_fetch_assoc($result)){

  $row_array[$i]=$row;
  unset($row_array[$i]['col_name']);
  $i++;
}

0 votes

Merci - c'est une idée utile, dans ma situation.

1 votes

Très mauvaise idée, vous sélectionnez toujours plus que ce dont vous avez besoin, ce qui gaspille les ressources de la base de données. Et c'est tout simplement une mauvaise idée de ne pas sélectionner des colonnes spécifiques dans la requête pour la production, sauf dans certains cas limites. Vous recommandez l'utilisation d'un anti-modèle SQL.

0 votes

Un anti-modèle SQL mais un modèle de code. L'alternative consiste à sélectionner tout sauf manuellement.

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