Подтвердить что ты не робот

Выбор всех полей, кроме только одного поля в mysql

Возможный дубликат:
Выделить все столбцы, кроме одного в MySQL?

Я хочу знать, есть ли способ выбрать все поля, кроме одного поля из таблицы в моей базе данных.

Я знаю, что я могу описать имена полей в запросе select.
Например:

SELECT fieldname1, fieldname2, fieldname3, fieldname4 FROM tablename;

Но мой вопрос в том, есть ли способ сделать это простым способом... Как этот

SELECT * FROM tablename EXCEPT(fieldname3);

Я использую MySQL и Zend framework.

4b9b3361

Ответ 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`;