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

如何定位查询的最后一行以显示在结果下方?(MySQL),mysql,database,sql-order-by,union,Mysql,Database,Sql Order By,Union,我有一个MySQL数据库查询,它从销售订单表中检索订购的商品。脚本返回产品及其数量。每个数量的下方都会显示产品id 我的当前查询的输出如下所示: 问题:标有成本的蓝色突出显示行必须位于所有订购产品的下方 我想要实现的最终输出必须如下所示: 我使用的代码如下: SET @origin=0; SELECT order_item_id, meta_key, meta_value, row, origin FROM ( SELECT bsb.ID AS meta_id, bsb.ORDER_ID

我有一个MySQL数据库查询,它从销售订单表中检索订购的商品。脚本返回产品及其数量。每个数量的下方都会显示产品id

我的当前查询的输出如下所示:

问题:标有成本的蓝色突出显示行必须位于所有订购产品的下方

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

我使用的代码如下:

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 

请帮助我将

将按订购条款更改为:

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

meta\u key='cost'
对于
cost
行是
1
,对于所有其他行是
0

您好,Barmar,感谢您的回复。你的建议行得通。但在我的例子中,我还有3个订单项目id,我希望成本行显示在根据订单项目id订购的所有产品的正下方。。您知道如何实现这一点吗?将
order\u item\u id
添加到您的
order BY
子句中,以便将其作为主要分组。您的问题是希望
成本
行位于所有订购产品的下方,不只是在同一
订单项目id的所有其他行下方。可能没有理由费心在
成本
子查询中设置
@row
@origin
。您好Barmar,谢谢您的回答您太棒了!