我有两张桌子。 TableA
和TableB
。这两个表都有一些包含两列的数据,如下所示。
TableA
---------
id Name
--- ----
1 abc
2 def
TableB
---------
id Name
--- ----
1 xyz
2 pqr
查询:
select id, name
from TableA
union
select id, name
from TableB;
要求是:我需要满足标准以下的查询。
我该如何编写查询?
答案 0 :(得分:2)
您可以使用外部联接而不是联合来执行此操作:
select coalesce(TableA.id, TableB.id),
coalesce(TableB.name, TableA.name)
from TableA
full outer join TableB on
TableA.id = TableB.id;
coalesce
selects the first argument from the list that is not null
答案 1 :(得分:2)
您的查询不满足(3)。
假设id
不可为空,您可以写:
SELECT id, name
FROM tableB
UNION ALL
SELECT id, name
FROM tableA a
WHERE a.id NOT IN (SELECT b.id
FROM tableB);
答案 2 :(得分:1)
SELECT [id], [Name]
FROM TableB
UNION
SELECT [id], [Name]
FROM TableA
WHERE [id] NOT IN (SELECT [id] FROM [TableB]
UNION
会自动排除重复项。您需要更改的是首先从TableB
中选择。