我们都知道,要从表中选择所有列,可以使用
SELECT * FROM tableA
是否有一种方法可以在不指定所有列的情况下从表中排除列?
SELECT * [except columnA] FROM tableA
我所知道的唯一方法是手动指定所有列并排除不需要的列。这真的很耗时,所以我正在寻找方法来节省时间和精力,以及未来的维护表应该有更多/更少的列。
我们都知道,要从表中选择所有列,可以使用
SELECT * FROM tableA
是否有一种方法可以在不指定所有列的情况下从表中排除列?
SELECT * [except columnA] FROM tableA
我所知道的唯一方法是手动指定所有列并排除不需要的列。这真的很耗时,所以我正在寻找方法来节省时间和精力,以及未来的维护表应该有更多/更少的列。
当前回答
如果你正在使用mysql-workbench,你可以右键单击表资源管理器,然后单击“发送到SQL编辑器->选择所有语句”。
它会发送一条语句,比如“Select col1, col2,…”从表”。
然后删除那些你不需要的。
其他回答
有时同一个程序必须处理不同的数据库结构。因此,我不能在程序中使用列列表来避免选择语句中的错误。
*给出所有可选字段。我在使用之前检查数据表中是否存在字段。这就是我在select中使用*的原因。
这是我如何处理排除字段:
Dim da As New SqlDataAdapter("select * from table", cn)
da.FillSchema(dt, SchemaType.Source)
Dim fieldlist As String = ""
For Each DC As DataColumn In DT.Columns
If DC.ColumnName.ToLower <> excludefield Then
fieldlist = fieldlist & DC.Columnname & ","
End If
Next
你可以创建一个包含你想要选择的列的视图,然后你可以从视图中选择*…
在Hive Sql中,你可以这样做:
set hive.support.quoted.identifiers=none;
select
`(unwanted_col1|unwanted_col2|unwanted_col3)?+.+`
from database.table
这就给了你剩下的cols
您可以使用REGEX列规范。
下面的查询选择除ds和hr之外的所有列 选择(ds |人力资源)? +。+来自销售
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