查询2个表以获取所有结果

时间:2017-06-16 13:21:50

标签: sql

我有一个sql qustion。它假设很简单,但我无法弄明白。 我有2张桌子:

**customer1 -** 
id      name
1       aaa
2       bbb
3       ccc
4       ddd

**customer2**-
id      name
1       aaa
2       bbb
5       eee
6       fff

我需要在两个表中获得所有客户。 我需要以一种方式查询,如果客户在两个表上,我会在结果中看到他两次(例如aaa,bbb),其余的只有一个。

非常感谢。

3 个答案:

答案 0 :(得分:2)

select id, name from customer1
union all
select id, name from customer2

答案 1 :(得分:1)

注意 UNION UNION ALL ,第一个不会重复,第二个你的查询结果甚至会重复。

让我们谈谈表演: UNION 是高度优化且非常快的,除非一个查询在另一个查询之前完成,并且您必须等待获取整个结果集。

如果您不介意重复, UNION ALL 会更快。

答案 2 :(得分:0)

我会把这个作为评论:Raghavendra Kedlaya帖子;但它不会让我。

我喜欢在使用union all时知道数据的来源。

SELECT id, name, 'Customer1' as src 
FROM customer1 
UNION ALL 
SELECT id, name, 'Customer2' as src
FROM customer2