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