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.
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;
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;
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`;