如何按主要项目排序,然后按同一表格

时间:2017-09-13 07:39:38

标签: mysql

我有一张包含主要产品及其子产品的表格,如下所示

enter image description here

我想首先对主要产品进行排序,然后对其所有子产品进行排序,如下图所示。

enter image description here

我可以使用代码执行此操作,但我想使用SQL查询获取已排序的数据,请帮助。

2 个答案:

答案 0 :(得分:1)

如果main_product_idNULL

,请尝试此操作
SELECT *
FROM products
ORDER BY COALESCE(main_product_id, product_id) ASC, 
         (CASE WHEN main_product_id IS NULL THEN 0 ELSE 1 END) ASC, 
         product_id ASC

如果是''

SELECT *
FROM products
ORDER BY (CASE WHEN main_product_id = '' THEN product_id ELSE main_product_id END) ASC, 
         (CASE WHEN main_product_id = '' THEN 0 ELSE 1 END) ASC,
         product_id ASC

订单Bys:

  1. 始终获取main_product_id到"组"它们。
  2. 排序帮助,将main_product_id放在最上面
  3. product_id排序(或任何您想要分类的子产品)

答案 1 :(得分:0)

如果main_product_id列值为空,那么我们可以将其视为main_product,并且必须首先为该组提供。

<强>查询

select t.`product_id`, t.`main_product_id` from(
    select `product_id`, `main_product_id`, 
    case when coalesce(trim(`mp_id`), '') = '' then `product_id` 
    else `main_product_id` end as `main_product_id_2`
    from `your_table_name`
) t
order by `main_product_id_2`, 
case when coalesce(trim(t.`main_product_id`), '') = '' then 1 else 2 end,
t.`product_id`;

<强> Find a demo here