Возможный дубликат:
Выделить все столбцы, кроме одного в MySQL?
Я хочу знать, есть ли способ выбрать все поля, кроме одного поля из таблицы в моей базе данных.
Я знаю, что я могу описать имена полей в запросе select.
Например:
SELECT fieldname1, fieldname2, fieldname3, fieldname4 FROM tablename;
Но мой вопрос в том, есть ли способ сделать это простым способом … Подобно этому
SELECT * FROM tablename EXCEPT(fieldname3);
Я использую MySQL и Zend framework.
вы можете легко это сделать
скажем, ваше поле id = 5
тогда
select * from your_table where id !=5
и если вы имеете в виду столбцы
скажем, вы не хотите, чтобы select column3
тогда
select column1,column2,column4 from tablename;
если у вас много столбцов
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;
Да, вы можете получить из 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;
Попробуй это –
SHOW FIELDS FROM `tablename` WHERE FIELD NOT IN ('f1','f2','f3');
Выполните этот запрос и введите конкретные имена полей и поместите каждое имя поля в массив. затем взорвать массив с помощью «,» внутри запроса выбора.
$fields = implode(',',$fields_arr); $sql = SELECT $fields FROM `tablename`;