在 MySQL 中要看 table 的資訊,可以用 desc tbl;
例如:
desc itmy191213;
+-------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| idt | datetime | NO | | NULL | |
| val | int(11) | NO | | NULL | |
+-------+------------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
MySQL 沒有 select * except (col ...) 這樣的語法.
但是我們可以自己想辦法加工,用 SQL Command 產生.
就是透過標準的系統schema, information_schema 來產生.
例如上面的table, 我們不需要 idt.
select concat('SELECT ' ,group_concat(column_name)) as cmd
from information_schema.columns
where table_schema = 'miku'
and table_name = 'itmy191213'
and column_name not in ('idt');
+---------------+
| cmd |
+---------------+
| SELECT id,val |
+---------------+
有辦法下SELECT * FROM TABLE A但是排除特定欄位 並給予指定的值嗎?
沒有,
替代方式是動態組合sql字串後執行,雖然也是需要給定特定值,好處是這部分可以程式代勞會輕鬆很多,缺點是要執行2次,效能比較低,第一次取出全部欄位名稱,排除不要的欄位組合並成sql後第二次才是真正的取出資料