可能性のある重複:
MySQLの1つを除くすべての列を選択しますか?
データベース内のテーブルから1つのフィールドを除くすべてのフィールドを選択する方法があることを知りたいです。
選択クエリでフィールド名を記述できることを知っています。
例えば:
SELECT fieldname1, fieldname2, fieldname3, fieldname4 FROM tablename;
しかし、私の質問は、簡単な方法でそれを行う方法はありますか...
SELECT * FROM tablename EXCEPT(fieldname3);
MySQLとZendフレームワークを使用しています。
そのように簡単にできます
あなたのフィールドが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;
はい、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`;