SQL select而不显示连接中的连接列

时间:2010-07-06 07:07:24

标签: sql join

如何在加入时排除重复的加入键列?

5 个答案:

答案 0 :(得分:3)

我认为你的意思是你不想在结果中显示它们。如果是这样,方法不是使用select *,而是在select中明确列出每个列的名称,那么你可以选择你想要的列。

这是一种很好的做法,因为当添加额外的列或不关心更改的列时,您的查询会返回相同的结果,因此您无需更改任何读取结果的代码。

另外,如果您在连接条件中有一列,则不需要在结果中显示该列。

答案 1 :(得分:2)

如果您的RDBMS支持此语法,请使用显式列列表或NATURAL JOINUSING (col)。 Oracle确实没有SQL Server。 (问题是标记的SQL没有指明特定的味道)

答案 2 :(得分:0)

不要SELECT *,而是明确命名您的列,例如:

SELECT a.ID, a.AccountNumber, b.Name, b.DOB
FROM Account a
JOIN Person b on a.ID = b.ID

答案 3 :(得分:0)

使用ep>列的别名

SELECT u.id as uid, u.name as username, s.id as sid  
FROM user u
JOIN SOMETHIG s on u.id = s.user_id

答案 4 :(得分:0)

这取决于查询的性质。如果您需要将联接表用作过滤器,则不要在主查询中将其联接,则可以将它作为子查询。

SELECT *
FROM A
WHERE A.SEQ IN (SELECT B.FKEY_SEQ
                    FROM B
                    LEFT JOIN B WITH (NOLOCK) ON B.FKEY_SEQ = A.SEQ
                    WHERE B.SOMECOLUMN IN ('1234','5678'))