dje*_*dot 2 sql sql-server inner-join
如何选择两个连接表的所有字段,而不与公共字段冲突?
假设我有两个表,Products并且Services.我想做一个这样的查询:
SELECT Products.*, Services.*
FROM Products
INNER JOIN Services ON Products.IdService = Services.IdService
Run Code Online (Sandbox Code Playgroud)
这个查询的问题是IdService会出现两次并导致一堆问题.
到目前为止,我发现的替代方案是区分Products除了IdService一个之外的每个字段.但是这样我每次添加新字段时都必须更新查询Products.
有一个更好的方法吗?
Amy*_*y B 12
你已经击中了反模式#1.
更好的方法是提供一个字段列表.获得快速字段列表的一种方法是
sp_help tablename
Run Code Online (Sandbox Code Playgroud)
如果你想从这个查询创建一个视图 - 使用select*会让你更麻烦.SQL Server在创建视图时捕获列列表.如果您编辑基础表并且不重新创建视图 - 您正在报名遇到麻烦(我有这种性质的生产火灾 - 视图是针对不同数据库中的表).