在连接中选择具有相同名称的字段

时间:2012-10-26 08:07:32

标签: 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。一样。 但是从第二张桌子开始'ON'字段。我也不喜欢t want to mention all the com字段 - 我喜欢com。

MSSQL中有没有正确的方法来做这些事情?

2 个答案:

答案 0 :(得分:1)

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

你可以做

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

 select com.field1, com.field2,...

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

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

答案 1 :(得分:0)

您可以对您的VE_Command(com)表使用通配符*运算符,只需从VE_COMMAND_SITE_BIND(bnd)中选择您想要的字段。

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

由于你的要求不想列出com的所有字段,可能更容易重命名你带来的那个字段

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