SQL中除少数列外的所有列



我有一个大数据原始(青铜)表,大约有400列。为了准备将这个表移动到其他级别的表(或银级),我正在从原始表中拾取395列;但是,我不喜欢在SQL查询中键入所有399列的名称。

是否有任何解决方案在SQL中节省一些时间?

不是

SELECT col1, col2, col3, ..., col395 FROM table

之类的
SELECT * EXCEPT col400 FROM table
SELECT CONCAT_WS(' ',
'SELECT',
GROUP_CONCAT(column_name),
'FROM database_name.table_name') query_text
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE table_schema = 'database_name' 
AND table_name = 'table_name' 
AND column_name NOT IN ('excess_column_1', 'excess_column_2', ...);

插入数据库名和表名,填写要排除的列列表,执行查询-它将生成所需的查询文本。

您可以将其转换为动态组合和执行所需查询的存储过程,并调用此SP而不是查询。

第一步

EXPLAIN SELECT * FROM tbl;
SHOW WARNINGS;

然后编辑输出以删除您不想要的列。

(下次,考虑一下在一个表中有那么多列是否明智;400是非常高的)

最新更新