我正在使用 MySQL 的 UNION 功能检索表结果。该表基本上包含来自销售订单
的订购商品下面是我使用的查询:
SET @meta_id=0;
SELECT bsb.ID AS meta_id, bsb.ORDER_ID AS order_item_id, '_product_id' AS meta_key, bsb.PRODUCT_ID AS meta_value, 1 AS origin
FROM b_sale_basket bsb
WHERE bsb.ORDER_ID = 255
UNION
SELECT bsb.ID AS meta_id, bsb.ORDER_ID AS order_item_id, '_qty' AS meta_key, bsb.QUANTITY AS meta_value, 2 AS origin
FROM b_sale_basket bsb
WHERE bsb.ORDER_ID = 255
) sales_order_meta
上面的第一个 查询检索 订购的产品 order_item_id 为 255
而
上面的第二个查询检索每个订购的产品的数量
旁注:如果您问我为什么要这样查询它们,因为它们都属于同一个表,那是因为我正在尝试像 woocommerce 一样检索它> 对其订购的元素执行...
上面查询的输出如下所示:
http://i.stack.imgur.com/qPsjv.png
但是,我希望对结果进行排序,以便在每个订购的产品下方 在下方订购的每个产品的数量 他们..
我想要的最终结果是这样的: http://i.stack.imgur.com/wx6Aw.png
请帮助我...
最佳答案
您可以使用用户定义的变量为每个单独的查询赋予排名,因此第一行查询 1 的排名为 1,类似地,第二个查询的第一行的排名为 1,然后是 2、3,依此类推然后按此行号排序结果
SELECT bsb.ID AS meta_id, bsb.ORDER_ID AS order_item_id, '_product_id' AS meta_key, bsb.PRODUCT_ID AS meta_value, 1 AS origin
,@r:= @r +1 AS `row`
FROM b_sale_basket bsb,(SELECT @r:=0) t
WHERE bsb.ORDER_ID = 255
UNION
SELECT bsb.ID AS meta_id, bsb.ORDER_ID AS order_item_id, '_qty' AS meta_key, bsb.QUANTITY AS meta_value, 2 AS origin
,@r:= @r +1 AS `row`
FROM b_sale_basket bsb,(SELECT @r:=0) t
WHERE bsb.ORDER_ID = 255
ORDER BY `row`
编辑
您也可以尝试ORDER BY order_item_id,meta_key
关于MySQL - 联合和排序/排序行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25357975/