我们都知道,要从表中选择所有列,可以使用
SELECT * FROM tableA
是否有一种方法可以在不指定所有列的情况下从表中排除列?
SELECT * [except columnA] FROM tableA
我所知道的唯一方法是手动指定所有列并排除不需要的列。这真的很耗时,所以我正在寻找方法来节省时间和精力,以及未来的维护表应该有更多/更少的列。
我们都知道,要从表中选择所有列,可以使用
SELECT * FROM tableA
是否有一种方法可以在不指定所有列的情况下从表中排除列?
SELECT * [except columnA] FROM tableA
我所知道的唯一方法是手动指定所有列并排除不需要的列。这真的很耗时,所以我正在寻找方法来节省时间和精力,以及未来的维护表应该有更多/更少的列。
当前回答
实际上雪花刚刚发布了排除,所以现在你只需要
SELECT *排除[columnA,columnB,…][英语背诵文选
其他回答
试试这个…
=QUERY(TRANSPOSE(QUERY('Data'!A1:AH,"SELECT * ",1)),"SELECT * WHERE Col1 <> 'Column
name'",1)
Postgres sql有一种方法
请参考: http://www.postgresonline.com/journal/archives/41-How-to-SELECT-ALL-EXCEPT-some-columns-in-a-table.html
信息Schema Hack方法
SELECT 'SELECT ' || array_to_string(ARRAY(SELECT 'o' || '.' || c.column_name
FROM information_schema.columns As c
WHERE table_name = 'officepark'
AND c.column_name NOT IN('officeparkid', 'contractor')
), ',') || ' FROM officepark As o' As sqlstmt
对于我的特定示例表,上面的代码生成如下所示的sql语句
选择o.officepark、o.owner o.squarefootage 从办公室公园As o
如果您有许多列,而您只想排除其中一列。您可以使用下面的命令 从表中选择* exclude(列名)
这样做不是更简单吗:
sp_help <table_name>
点击“Column_name”列>复制>粘贴(创建一个垂直列表)到新建查询窗口,只需在每个列值前面键入逗号…注释掉你不想要的专栏。比这里提供的任何代码都要少得多,而且仍然是可管理的。
像BigQuery这样的现代SQL方言提出了一个极好的解决方案。
SELECT * EXCEPT(ColumnNameX, [ColumnNameY, ...])
FROM TableA
这是一种非常强大的SQL语法,可以避免由于表列名更改而需要随时更新一长串列。而这个功能在当前的SQL Server实现中是缺失的,这是一个遗憾。希望有一天,微软Azure对数据科学家更加友好。
数据科学家喜欢有一个快速选项来缩短查询并删除一些列(由于重复或任何其他原因)。
https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax#select-modifiers