Sql server 从多个数据库中选择*并从结果中排除一列
如前所述,我有3个(或更多)数据库,正在运行以下查询:Sql server 从多个数据库中选择*并从结果中排除一列,sql-server,Sql Server,如前所述,我有3个(或更多)数据库,正在运行以下查询: SELECT * FROM [dbo].[FeatureVector] f, [dbo].[Defect] d,[dbo].DefectClass c WHERE f.DefectID = d.DefectID AND f.DefectMapID = d.DefectMapID AND d.GaugeID = d.GaugeID AND d.DefectStatus = 5 AND c.ClassID = d.Cl
SELECT *
FROM [dbo].[FeatureVector] f, [dbo].[Defect] d,[dbo].DefectClass c
WHERE f.DefectID = d.DefectID
AND f.DefectMapID = d.DefectMapID
AND d.GaugeID = d.GaugeID
AND d.DefectStatus = 5
AND c.ClassID = d.ClassID
AND f.Feature0 IS NOT NULL
我想从结果中排除一列,比如XY,我尝试过:
SELECT * EXCEPT "XY"
...
及
显式指定列,而不是使用*?不管怎么说,这是最佳实践。。。您真的不应该在任何地方使用*anywhere,因为它会使代码变得脆弱明确指定列,而不是使用*?不管怎么说,这是最佳实践。。。确实不应该在任何地方使用*anywhere,因为它会使代码变得脆弱创建一个视图,在该视图中可以显式指定列名,然后在SELECT查询中使用该视图
另外,在SELECT查询中使用以逗号分隔的表也是一种不好的做法,您应该改用标准联接。创建一个视图,您可以在其中显式指定列名,然后在SELECT查询中使用该视图
另外,在SELECT查询中使用以逗号分隔的表也是一种不好的做法,您应该改用标准联接。所以请从sys.columns中选择*并复制和粘贴它们!遗憾的是,没有一种更简单的方法可以做到这一点——正如我提到的,无论如何,您都应该显式地声明它们,因为其他一些原因……您可以将“列”节点从SSMS中的对象资源管理器拖到查询窗口中,它将自动为您提供列分隔的列列表。但是我会考虑把你的桌子分成更小的桌子,因为一个600列(非常宽)的桌子会非常糟糕的表现…在SQL内部文件中查找扩展数据块和行,这将导致性能下降。请从sys.columns中选择*,然后复制并粘贴它们!遗憾的是,没有一种更简单的方法可以做到这一点——正如我提到的,无论如何,您都应该显式地声明它们,因为其他一些原因……您可以将“列”节点从SSMS中的对象资源管理器拖到查询窗口中,它将自动为您提供列分隔的列列表。但是我会考虑把你的桌子分成更小的桌子,因为一个600列(非常宽)的桌子会非常糟糕的表现…在SQL内部文件中查找扩展数据块和行,这将导致性能下降-在ANSI-92 SQL标准(25年前)中,旧样式的逗号分隔表样式被正确的ANSI
JOIN
语法所取代不鼓励使用它,复制粘贴excel中的所有列,并使用transposewhat aboutselect*从现有表转换为新表
,然后alter table newTable drop colname
最后select*从新表
,您的问题解决了吗?@ahmedabdelqader-您建议复制整个表以避免写出列列表?我的天啊,在ANSI-92 SQL标准中(25年前),老式的逗号分隔表样式被正确的ANSIJOIN
语法所取代不鼓励使用它,复制粘贴excel中的所有列,并使用transposewhat aboutselect*从现有表转换为新表
,然后alter table newTable drop colname
最后select*从新表
,您的问题解决了吗?@ahmedabdelqader-您建议复制整个表以避免写出列列表?天哪
SELECT * DROP "XY"
...