我有一个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),其余的只有一个。
非常感谢。
答案 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