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

标签 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 

请帮助我..

最佳答案

ORDER BY 子句更改为:

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

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

关于mysql - 如何定位查询的最后一行以显示在结果下方? (MySQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25376757/

相关文章:

mysql - Laravel 转换现有用户系统多类型

mysql - 使用mysql程序计算20-50之间的偶数和奇数总数

sql - PostgreSQL 错误,没有给出唯一约束匹配

php - ORDER BY 列内容 MSQL PHP

sql - 根据列值的条件 ORDER BY

php - Mysqli 获取数组第n行

mysql - 无法连接到数据库 (10061)

mysql 显示 innodb 状态输出

php - 为什么查询只返回一条记录而不是许多记录?

sql - 使用 View 对 mysql 中的选择进行预排序?