web-dev-qa-db-fra.com

Sélectionner tous les champs sauf un seul champ dans mysql

Copie possible:
Sélectionnez toutes les colonnes sauf une dans MySQL?

Je veux savoir s'il existe un moyen de sélectionner tous les champs sauf un champ d'une table dans ma base de données.

Je sais que je peux décrire les noms de champ dans la requête de sélection.
Par exemple:

SELECT fieldname1, fieldname2, fieldname3, fieldname4 FROM tablename;

Mais ma question est, est-il possible de le faire de manière simple ... Comme ça

SELECT * FROM tablename EXCEPT(fieldname3);

J'utilise le framework MySQL et Zend.

15
Deepu

vous pouvez le faire facilement comme ça

disons que votre champ est un id = 5

ensuite

   select * from your_table where id !=5 

et si vous voulez dire des colonnes

disons que vous ne voulez pas sélectionner column3

ensuite

   select column1,column2,column4 from tablename;

si vous avez plusieurs colonnes

    SET @sql = CONCAT('SELECT ', (SELECT REPLACE(GROUP_CONCAT(COLUMN_NAME),  '<columns_to_delete>,', '') 
    FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '<table>'   AND TABLE_SCHEMA = '<database>'), ' FROM <table>');

    PREPARE stmt1 FROM @sql;
   EXECUTE stmt1;
13
echo_Me

Oui, vous pouvez récupérer à partir de information_schema.columns

SET @sql = CONCAT('SELECT ', (SELECT GROUP_CONCAT(COLUMN_NAME) FROM 
information_schema.columns WHERE table_schema = 'dbo' AND table_name = 
'tablename' AND column_name NOT IN ('c1', 'c2')), 
' from dbo.tablename');  

PREPARE stmt1 FROM @sql;

EXECUTE stmt1;
7
mbharanidharan88

Essaye ça -

SHOW FIELDS FROM `tablename` WHERE FIELD NOT IN ('f1','f2','f3');

Exécutez cette requête et récupérez les noms de champs spécifiques et placez chaque nom de champ dans un tableau. implosez ensuite le tableau avec ',' dans la requête de sélection.

$fields = implode(',',$fields_arr);
$sql = SELECT $fields FROM `tablename`;
5
Mithun Sen