Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL-联合和排序/排序行_Mysql_Database_Sql Order By_Union - Fatal编程技术网

MySQL-联合和排序/排序行

MySQL-联合和排序/排序行,mysql,database,sql-order-by,union,Mysql,Database,Sql Order By,Union,我正在使用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

我正在使用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 
上面的第一个查询检索订单项id为255的订购产品 而上面的第二个查询检索每个订购产品的数量

旁注:如果你问我为什么这样查询它们,因为它们都属于同一个表,那是因为我试图检索它们,就像woocommerce检索其已订购的项目一样

上述查询的输出如下所示:

但是,我希望对结果进行排序,以便在订购的每种产品下面都有订购的每种产品的数量

我想要的最终结果如下所示:


请帮助我…

您可以使用用户定义的变量为每个查询指定一个等级,这样第一行查询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`
编辑


您也可以尝试按订单订购商品id、元钥匙

你好,Khalid,谢谢您的回复。谢谢你的建议。我明白你的意思。我尝试了您的示例,但列行按顺序返回1,2,3,4。。你对如何实现最终输出还有什么想法吗?嗨,哈立德。谢谢你的建议。我得到了正确的输出。