Possible duplicate:
Select all columns except one in MySQL?
I want to know is there a way to select all fields except one field from a table in my database.
I know I can describe the field names in the select query.
For example:
SELECT fieldname1, fieldname2, fieldname3, fieldname4 FROM tablename;
But my question is, is there any way to do it in a simple way... Like this
SELECT * FROM tablename EXCEPT(fieldname3);
I am using MySQL and Zend framework.
you can do it easily like that
lets say your field is an id = 5
then
select * from your_table where id !=5
and if you mean columns
lets say you dont want select column3
then
select column1,column2,column4 from tablename;
if you have many columns
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;
Yes you can fetch from 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;
Try this -
SHOW FIELDS FROM `tablename` WHERE FIELD NOT IN ('f1','f2','f3');
Execute this query and fetch the specific field-names and put each field-name into an array.
then implode the array with ',' inside the select query.
$fields = implode(',',$fields_arr);
$sql = SELECT $fields FROM `tablename`;