0

提出的问题不是实际问题,而是逻辑问题。

让我们建议我们必须对表 A (ID_A, A_Name) 和 B (ID_B, B_Name, ID_A)

如果我运行类似的东西

 select A_Name from A
        union
 select B_Name from B

结果将如下所示(不考虑排序):

  A_Name1
  A_Name2
  A_Name3
  B_Name1
  B_Name2
  B_Name3

问题:如何仅使用 JOIN 运算符而不使用 UNION 获得相同的结果(结合所有 A_Names 和 B_Names 的单个列)?

4

3 回答 3

1
select coalesce(A.A_Name, B.B_Name)
from A full join B on 1=0;
于 2013-05-23T09:32:20.803 回答
1

您可以使用 FULL 外连接来获得结果

select case when nameA is null then  nameB else nameA end as UNIONNAME 
from 
tableA
full outer join 
tableB
on nameA=nameB

SQL 小提琴

于 2013-05-23T09:33:03.400 回答
1

你可以使用这个选择:

SELECT CASE WHEN ISNULL(A_Name, '') <> '' THEN A_Name ELSE B_Name END AS Name
FROM A FULL OUTER JOIN B ON A_Name = B_Name
于 2013-05-23T09:38:13.843 回答