获取所有产品,并将特定订单的产品放在首位

Posted

技术标签:

【中文标题】获取所有产品,并将特定订单的产品放在首位【英文标题】:Get all the products, and putting a specific order's product first 【发布时间】:2014-11-16 12:28:17 【问题描述】:

我有 3 个表:productsordersorderLines(order_id, product_id)。

我有一个 sql 查询来找出在 only one query 中似乎几乎不可能做到的事情。 有没有办法只在一个查询中:

所有产品,但首先显示特定订单的产品; 这意味着:对于order A:首先显示product1product2.. 出现在orderA's orderLines 中,然后接下来显示following products(未排序)。

PS: 我知道可以通过两个查询的union 来实现这一点,但最好在only one query 中完成。

【问题讨论】:

【参考方案1】:

您可以在order by 子句中放置一个子查询。在这种情况下,您需要一个 exists 子查询:

select p.*
from products p
order by (exists (select 1
                  from orderlines ol
                  where p.productid = ol.productid and o.orderid = ORDERA
                 )
         ) desc;

【讨论】:

以上是关于获取所有产品,并将特定订单的产品放在首位的主要内容,如果未能解决你的问题,请参考以下文章

MS-Access 获取特定订单日期的产品价格

订单部分后台缺少产品和订单状态

获取 WooCommerce 订单的每个项目的产品类别

对订单进行分组并获取每个订单的产品列表

使用php限制最小订单

sql 由特定作者导出产品的woocommerce订单电子邮件 - 显示订单已完成日期和变更密钥以及值(如果适用)