16

重複の可能性:
MySQL の 1 つを除くすべての列を選択しますか?

データベース内のテーブルから 1 つのフィールドを除くすべてのフィールドを選択する方法があるかどうかを知りたいです。

選択クエリでフィールド名を記述できることはわかっています。
例えば:

SELECT fieldname1, fieldname2, fieldname3, fieldname4 FROM tablename;

しかし、私の質問は、簡単な方法でそれを行う方法はありますか...このように

SELECT * FROM tablename EXCEPT(fieldname3);

MySQL と Zend フレームワークを使用しています。

4

3 に答える 3

12

あなたはそのように簡単にそれを行うことができます

あなたのフィールドが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;
于 2013-01-10T09:12:01.653 に答える
7

はい、から取得できます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;
于 2013-01-10T09:00:08.647 に答える
6

これを試して -

SHOW FIELDS FROM `tablename` WHERE FIELD NOT IN ('f1','f2','f3');

このクエリを実行して特定のフィールド名を取得し、各フィールド名を配列に入れます。次に、選択クエリ内で「、」を使用して配列を内破します。

$fields = implode(',',$fields_arr);
$sql = SELECT $fields FROM `tablename`;
于 2013-01-10T09:54:11.713 に答える