如何将查询的最后一行定位在结果下方? (MySQL的)

时间:2014-08-19 06:14:44

标签: mysql database sql-order-by union

我有一个MySQL数据库查询,可以从 sales_order_table中检索订购商品。该脚本会返回产品及其数量。每个数量下方都会显示产品ID。

当前查询输出如下所示: enter image description here

问题:带有蓝色突出显示费用的行必须位于所有订购产品的下方

我想要实现的最终输出必须如下所示: enter image description here

我使用的代码是:

SET @origin=0;

SELECT order_item_id, meta_key, meta_value, row, origin FROM (

SELECT bsb.ID AS meta_id, bsb.ORDER_ID AS order_item_id, '_qty' AS meta_key, bsb.QUANTITY AS meta_value, @a:= @a + 1 AS row, @origin:= @origin +1 AS origin
FROM bsb,(SELECT @a:=0) t
WHERE bsb.ORDER_ID IN (300)
UNION

SELECT bsb.ID AS meta_id, bsb.ORDER_ID AS order_item_id, '_product_id' AS meta_key, bsb.PRODUCT_ID AS meta_value,   @b:= @b + 1 AS row, @origin:= @origin +1 AS origin
FROM bsb, (SELECT @b:=0) t
WHERE bsb.ORDER_ID IN (300)
UNION       

SELECT '' AS meta_id, bso.ID AS order_item_id, 'cost' AS meta_key, 0 AS meta_value,  @j:= @j + 1 AS row, @origin:= @origin +1 AS origin
FROM bso, (SELECT @j:=1) t
WHERE bso.ID IN (300)

) sales_order_meta ORDER BY row, origin 

请帮助我..

1 个答案:

答案 0 :(得分:1)

ORDER BY子句更改为:

ORDER BY order_item_id, meta_key = 'cost', row, origin

meta_key = 'cost' 1行为cost,所有其他行为0