根据 2 列值排序
Order by depending on 2 column values
我有一个查询,returns 输出如下,
SELECT DISTINCT a.rev_date ,fruitname,
fruit_id , primary_fruit_id
FROM fruits a, fruit_lookup s,fruit_reference r
WHERE a.id = s.id(+)
and primary_fruit_id = r.fruit_id(+)
AND (fruit_id = 24 or fruit_id = 0)
ORDER BY fruit_id desc, a.rev_date desc
如何处理这个问题,以便在 id 和主 id 相同时首先显示它们,我仍然可以获得所需的输出?任何想法表示赞赏。我尝试做 union 等但没有得到想要的 o/p。 fruit_id desc 的顺序不正确,因为这不是正确的顺序 manner.thanks
NAME FRUIT_ID PRIMARY_FRUIT_ID
--------------------------------------
apple 24 24
orange 24 12
pear 24 7
apple 24 24
kiwi 24 6
apple 24 24
apple 24 24
melon 24 2
grape 0 90
banana 0 45
carrot 0 30
期望的输出
NAME FRUIT_ID PRIMARY_FRUIT_ID
--------------------------------------
apple 24 24
apple 24 24
apple 24 24
apple 24 24
kiwi 24 6
orange 24 12
melon 24 2
pear 24 7
grape 0 90
banana 0 45
carrot 0 30
试试这个:
ORDER BY fruit_id desc, abs(fruit_id-PRIMARY_FRUIT_ID) asc
您想生成一个值,以便根据您想要的条件进行排序。
ORDER BY fruit_id desc,
a.rev_date desc,
case when fruit_id = primary_fruit_id then 0 else 1 end
您没有在示例输出中显示日期字段,所以我不知道该日期如何分割输出。我猜日期比 "same key value" 更相关,但您可以将它放在任何能给您想要的效果的地方。
ORDER BY fruit_id desc,
case when fruit_id = primary_fruit_id then 0 else 1 end,
a.rev_date desc
ORDER BY case when fruit_id = primary_fruit_id then 0 else 1 end,
fruit_id desc,
a.rev_date desc
我有一个查询,returns 输出如下,
SELECT DISTINCT a.rev_date ,fruitname,
fruit_id , primary_fruit_id
FROM fruits a, fruit_lookup s,fruit_reference r
WHERE a.id = s.id(+)
and primary_fruit_id = r.fruit_id(+)
AND (fruit_id = 24 or fruit_id = 0)
ORDER BY fruit_id desc, a.rev_date desc
如何处理这个问题,以便在 id 和主 id 相同时首先显示它们,我仍然可以获得所需的输出?任何想法表示赞赏。我尝试做 union 等但没有得到想要的 o/p。 fruit_id desc 的顺序不正确,因为这不是正确的顺序 manner.thanks
NAME FRUIT_ID PRIMARY_FRUIT_ID
--------------------------------------
apple 24 24
orange 24 12
pear 24 7
apple 24 24
kiwi 24 6
apple 24 24
apple 24 24
melon 24 2
grape 0 90
banana 0 45
carrot 0 30
期望的输出
NAME FRUIT_ID PRIMARY_FRUIT_ID
--------------------------------------
apple 24 24
apple 24 24
apple 24 24
apple 24 24
kiwi 24 6
orange 24 12
melon 24 2
pear 24 7
grape 0 90
banana 0 45
carrot 0 30
试试这个:
ORDER BY fruit_id desc, abs(fruit_id-PRIMARY_FRUIT_ID) asc
您想生成一个值,以便根据您想要的条件进行排序。
ORDER BY fruit_id desc,
a.rev_date desc,
case when fruit_id = primary_fruit_id then 0 else 1 end
您没有在示例输出中显示日期字段,所以我不知道该日期如何分割输出。我猜日期比 "same key value" 更相关,但您可以将它放在任何能给您想要的效果的地方。
ORDER BY fruit_id desc,
case when fruit_id = primary_fruit_id then 0 else 1 end,
a.rev_date desc
ORDER BY case when fruit_id = primary_fruit_id then 0 else 1 end,
fruit_id desc,
a.rev_date desc