【问题标题】:MySQL - UNION 2 Tables then ORDER BYMySQL - UNION 2 表然后 ORDER BY
【发布时间】:2014-10-03 22:46:32
【问题描述】:

我正在组合两个查询,我正在使用 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 - Unknown column 'bso.ID' in 'order Clause'

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

注意:我想对行进行排序,以便在所有订购的物品都完成后,它们下方有一个运输行

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

【问题讨论】:

  • 尝试使用order_union_result ORDER by order_item_id
  • 您好 Jens,感谢您的快速回复。我试过你的建议,但它不会排序,因为它们有不同的 order_item_id,就像图片中一样
  • @Redsot:你试过order_id下单吗?
  • 你好 Jens.. 我已经解决了答案.. 我使用了两个字段来排序.. 你应该像 Samonth 那样发布你的答案作为一个真实的答案,这样我就可以做绿色复选标记.. 再次感谢 Jens

标签: mysql database union sql-insert jointable


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    试试这个:

    ORDER by order_item_id
    

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

    【讨论】:

    • 你好 Samoth,我也试过 ORDER by order_item_id 但它不会被排序,因为第一列有不同的 id 值....
    猜你喜欢
    • 2011-09-17
    • 1970-01-01
    • 2011-12-20
    • 2014-05-30
    • 2016-11-22
    • 1970-01-01
    • 2019-10-24
    • 2011-09-06
    • 2017-11-02
    相关资源
    最近更新 更多