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

时间:2014-11-16 12:28:18

标签: mysql sql join

我有3个表:产品订单 orderLines (order_id,product_id)。

我有一个SQL查询来确定在only one query中几乎不可能做到的事情 有没有办法只有一个查询:

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

PS: 我知道可以通过union两个查询实现此目标,但最好在only one query中完成此操作。

1 个答案:

答案 0 :(得分:4)

您可以在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;