繁体   English   中英

MySQL-UNION 2表然后按ORDER BY

[英]MySQL - UNION 2 Tables then ORDER BY

我正在合并两个查询,并且正在使用UNION合并这两个结果集。

第一个查询:

SELECT * FROM (SELECT bsb.ID AS order_item_id, bsb.NAME AS order_item_name, 'line_item' AS order_item_type, bsb.ORDER_ID AS order_id 
  FROM b_sale_basket bsb 
   WHERE bsb.ORDER_ID IN (810, 255)
UNION

第二个查询:

SELECT bso.ID AS order_item_id, bsd.NAME AS order_item_name, 
'shipping' AS order_item_type, bso.ID AS order_id FROM b_sale_order bso 
 LEFT OUTER JOIN b_sale_delivery bsd ON bso.DELIVERY_ID = bsd.ID 
   WHERE bso.ID IN (255, 810)) order_union_result

这两个查询的结果很好,看起来像这样:

图片

我尝试将ORDER BY子句放在第二个查询的末尾,以便在所有ordered_items之后都有一个SHIPMENT ROW

UNION
SELECT bso.ID AS order_item_id, bsd.NAME AS order_item_name, 'shipping' AS order_item_type, bso.ID AS order_id
FROM b_sale_order bso
LEFT OUTER JOIN b_sale_delivery bsd ON bso.DELIVERY_ID = bsd.ID
WHERE bso.ID IN (255, 810)) order_union_result ORDER by bso.ID

但这提示我错误: #1054-“订单子句”中的未知列“ bso.ID”

结果应如下所示: http : //i.stack.imgur.com/ZCfLk.png

注意:我想对行进行排序,以便在所有订购商品都在后,在它们下面有一个装运行

请帮助我。 感谢您的帮助,不胜感激

尝试这个:

ORDER by order_item_id

您应该在ORDER BY子句中使用别名

使用order_id代替bso.ID 这应该可以解决您的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM