想要的结果是:
已下单 订单号 未下单 订单号
这union好废呀,我都起别名还直接组合在第一个列上。
这union好废呀,我都起别名还直接组合在第一个列上。
1、你union前的select语句明显关联有问题,customers和orders关联了两次,但只提供了一个关联条件,你的输出结果也是重复数据(这个是必然的),希望是你提问时精简语句的问题,而不是正式业务SQL的问题
2、你可能对UNION的理解有误,UNION是两个同构集合的并集,即记录数相并(如果不加ALL会自动去重),而不是列相并,你要想列相并达到你想要的效果,就需要使用楼上所说的 CASE WHEN 等方式在SELECT中输出所有四个列,并且UNION也只能实现前两个字段为空或后两个字段为空的并集,类似:
已下单 | 订单号 | 未下单 | 订单号 |
---|---|---|---|
10000001 | 20005 | ||
10000003 | 20007 | ||
10000002 | NULL |
3、你只是说了想要结果的输出列,并未说明输出数据的样式,是上面的输出样式还是如下的输出样式呢?
已下单 | 订单号 | 未下单 | 订单号 |
---|---|---|---|
10000001 | 20005 | 10000002 | NULL |
10000003 | 20007 |
4、通常,人们都是使用这样的输出样式
客户ID | 订单号 |
---|---|
10000001 | 20005 |
10000002 | 未下单 |
10000003 | 20007 |