如何在加入时排除重复的加入键列?
答案 0 :(得分:3)
我认为你的意思是你不想在结果中显示它们。如果是这样,方法不是使用select *,而是在select中明确列出每个列的名称,那么你可以选择你想要的列。
这是一种很好的做法,因为当添加额外的列或不关心更改的列时,您的查询会返回相同的结果,因此您无需更改任何读取结果的代码。
另外,如果您在连接条件中有一列,则不需要在结果中显示该列。
答案 1 :(得分:2)
如果您的RDBMS支持此语法,请使用显式列列表或NATURAL JOIN
或USING (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'))