如何在一个结果上同时显示已下单和未下单

img


想要的结果是:
已下单 订单号 未下单 订单号

这union好废呀,我都起别名还直接组合在第一个列上。

1、你union前的select语句明显关联有问题,customers和orders关联了两次,但只提供了一个关联条件,你的输出结果也是重复数据(这个是必然的),希望是你提问时精简语句的问题,而不是正式业务SQL的问题
2、你可能对UNION的理解有误,UNION是两个同构集合的并集,即记录数相并(如果不加ALL会自动去重),而不是列相并,你要想列相并达到你想要的效果,就需要使用楼上所说的 CASE WHEN 等方式在SELECT中输出所有四个列,并且UNION也只能实现前两个字段为空或后两个字段为空的并集,类似:

已下单订单号未下单订单号
1000000120005
1000000320007
10000002NULL

3、你只是说了想要结果的输出列,并未说明输出数据的样式,是上面的输出样式还是如下的输出样式呢?

已下单订单号未下单订单号
100000012000510000002NULL
1000000320007

4、通常,人们都是使用这样的输出样式

客户ID订单号
1000000120005
10000002未下单
1000000320007

case when

  1. case when 条件 then 值 end 已下单,
  2. 我看你这个也是好几个表连接得出来的数据,那你也可以建个临时表a,b。然后直接select * from a,b