我们都知道,要从表中选择所有列,可以使用
SELECT * FROM tableA
是否有一种方法可以在不指定所有列的情况下从表中排除列?
SELECT * [except columnA] FROM tableA
我所知道的唯一方法是手动指定所有列并排除不需要的列。这真的很耗时,所以我正在寻找方法来节省时间和精力,以及未来的维护表应该有更多/更少的列。
我们都知道,要从表中选择所有列,可以使用
SELECT * FROM tableA
是否有一种方法可以在不指定所有列的情况下从表中排除列?
SELECT * [except columnA] FROM tableA
我所知道的唯一方法是手动指定所有列并排除不需要的列。这真的很耗时,所以我正在寻找方法来节省时间和精力,以及未来的维护表应该有更多/更少的列。
当前回答
我知道这有点过时了,但我也遇到过同样的问题,正在寻找答案。然后我让一个高级开发人员给我展示了一个非常简单的技巧。
如果使用management studio查询编辑器,请展开数据库,然后展开从中选择的表,以便可以看到列文件夹。
在选择语句中,只需突出显示上面引用的列文件夹,并将其拖放到查询窗口中。它将粘贴表的所有列,然后简单地从列列表中删除标识列…
其他回答
不,这是不可能的。如果在您的情况下可行,也许您可以创建自定义视图
如果你的数据库支持动态sql的执行,你可以写一个SP,把你不想看到的列传递给它,让它动态创建查询并返回结果给你。我认为这至少在SQL Server中是可行的
通常的最佳实践是指定需要哪些列,而不是仅仅指定*。因此,您只需声明希望select返回哪些字段。
试试这个…
=QUERY(TRANSPOSE(QUERY('Data'!A1:AH,"SELECT * ",1)),"SELECT * WHERE Col1 <> 'Column
name'",1)
总之,你不能这样做,但我不同意上面所有的评论,有“一些”情况下,你可以合法地使用* 当您创建一个嵌套查询以便从整个列表中选择一个特定的范围(例如分页)时,为什么要在外部选择语句中指定每一列,而您已经在内部选择语句中完成了呢?
根据表的大小,您可以将其导出到Excel中,并将其转置为一个新表,其中原始表的列将是新表中的行。然后将其返回到SQL数据库中,根据条件选择行并将它们插入到另一个新表中。最后,将这个更新的表导出到Excel,并进行另一次转置,以获得所需的表,并将其带回SQL数据库。
不确定转置是否可以在SQL数据库中完成,如果是,那么它会更容易。
Jeff