Sql server 在联接中选择同名字段

Sql server 在联接中选择同名字段,sql-server,inner-join,Sql Server,Inner Join,我有这样一个sql查询: SELECT com.* from VE_COMMAND_SITE_BIND bnd INNER JOIN [dbo].[VE_COMMAND] com ON bnd.COMMAND_ID = com.ID 两个表中都有名为“ON”的字段。我想从第一个表格com中选择所有字段,就像我使用com一样。, 但是第二个表bnd中的字段“ON”。我也不想提及所有的com字段-我喜欢com MSSQL中是否有合适的方法来执行这些操作?如果您的问题是“我可以从表com中选

我有这样一个sql查询:

    SELECT com.*
from VE_COMMAND_SITE_BIND bnd INNER JOIN [dbo].[VE_COMMAND] com ON bnd.COMMAND_ID = com.ID
两个表中都有名为“ON”的字段。我想从第一个表格com中选择所有字段,就像我使用com一样。, 但是第二个表bnd中的字段“ON”。我也不想提及所有的com字段-我喜欢com

MSSQL中是否有合适的方法来执行这些操作?

如果您的问题是“我可以从表com中选择除一个字段外的所有内容,然后从表bnd中选择一个字段吗?”那么答案是“否。您必须单独定义结果字段”

你可以这样做

 select com.*, bnd.[on] as bndon

此外,您应该尽量避免将字段称为“on”,因为
on
是一个保留字


出于可维护性和潜在性能原因,最好单独指定要从
select
语句返回的字段。

您可以对VE_命令(com)表使用通配符*运算符,只需从VE_命令站点绑定(bnd)中选择所需字段

需要注意的一件事是命名冲突。您可以说,在这两个表中,字段都被调用。这可能会导致任何试图按名称访问字段的客户端应用程序出现问题。(它选择哪一个,等等?)

由于您不希望列出com的所有字段,因此重命名从bnd中带出的字段可能更容易

SELECT 
   com.*,
   bnd.ON AS BindOn
FROM
   ...

使用正确的别名选择所需的内容,但仅用于测试,不用于生产
SELECT 
   com.*,
   bnd.ON AS BindOn
FROM
   ...