我有 3 个表:产品、订单和orderLines(order_id、product_id)。
我有一个 SQL 查询来找出在仅一个查询
中几乎不可能完成的操作。
有没有一种方法可以只包含一个查询:
- 所有产品,但首先显示特定订单的产品;
这意味着:对于
order A
:首先显示product1
、product2
.. 出现在orderA 的 orderLines
中,然后接下来显示以下产品
(未订购)。
PS:
我知道可以通过两个查询的联合
来实现这一点,但最好仅在一个查询
中完成。
最佳答案
您可以在 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;
关于mysql - 获取所有产品,并将特定订单的产品放在前面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26956901/