Meskipun banyak yang mengatakan bahwa praktik terbaik adalah secara eksplisit mencantumkan setiap kolom yang ingin Anda kembalikan, ada situasi di mana Anda mungkin ingin menghemat waktu dan menghilangkan kolom tertentu dari hasil (mis. pengujian). Di bawah ini saya telah memberikan dua opsi untuk menyelesaikan masalah ini.
1. Buat Fungsi yang mengambil semua nama kolom yang diinginkan:( Saya membuat skema yang disebut fungsi untuk menampung fungsi ini)
DELIMITER $$
CREATE DEFINER=`root`@`%` FUNCTION `getTableColumns`(_schemaName varchar(100), _tableName varchar(100), _omitColumns varchar(200)) RETURNS varchar(5000) CHARSET latin1
BEGIN
SELECT GROUP_CONCAT(COLUMN_NAME) FROM information_schema.columns
WHERE table_schema = _schemaName AND table_name = _tableName AND FIND_IN_SET(COLUMN_NAME,_omitColumns) = 0 ORDER BY ORDINAL_POSITION;
END
Buat dan jalankan pernyataan pilih:
SET @sql = concat('SELECT ', (SELECT
functions.getTableColumns('test', 'employees', 'age,dateOfHire')), ' FROM test.employees');
PREPARE stmt1 FROM @sql;
EXECUTE stmt1;
2. ATAU tanpa menulis fungsi, Anda dapat:
SET @sql = CONCAT('SELECT ', (SELECT GROUP_CONCAT(COLUMN_NAME) FROM
information_schema.columns WHERE table_schema = 'test' AND table_name =
'employees' AND column_name NOT IN ('age', 'dateOfHire')),
' from test.eployees');
PREPARE stmt1 FROM @sql;
EXECUTE stmt1;
*Ganti tes dengan nama skema Anda sendiri
**Ganti karyawan dengan nama tabel Anda sendiri
***Ganti age,dateOfHire dengan kolom yang ingin Anda hilangkan (Anda dapat mengosongkannya untuk mengembalikan semua kolom atau cukup masukkan satu nama kolom untuk dihilangkan)
** **Anda dapat menyesuaikan panjang varchars dalam fungsi untuk memenuhi kebutuhan Anda