需要针对此案例的SQL查询

时间:2015-04-28 10:59:04

标签: sql database oracle

我有下表

OrderNO   |    ParentNO
1         |        null
2         |        null
1         |       3
2         |       3
3         |       null 

我需要一个SQL查询,它将按以下顺序检索上述表格数据

OrderNO   |    ParentNO
    1         |        null
    2         |        null
    3         |       null 
    1         |       3
    2         |       3

这个视图背后的逻辑是第一个偏好是订单号为空,如果订单号在父语句中没有,那么它应该显示在相应的订单号旁边。在上面的示例中 - orderno1 with null in the第一行,因为orderno1在parentno中不可用,然后显示下一个带有null parentno的orderno2,因为orderno2在parentno中不可用,然后显示下一个带有null parentno的orderno3然后,因为orderno3在parentno中可用,相应的行显示在下一个3.1 (1 | 3),接下来3.2(2 | 3)

3 个答案:

答案 0 :(得分:1)

您可以使用NULLS FIRST,如下所示

select OdrerNO, ParentNO
from tab
order by ParentNO NULLS FIRST, OdrerNO ASC

答案 1 :(得分:1)

尝试此查询:

SELECT OrderNo, ParentNo FROM
table
ORDER BY ParentNo ASC NULLS FIRST, OrderNo ASC

您需要在NULLS FIRST列上指定ParentNo,因为默认情况下NULL值会按升序排列。

答案 2 :(得分:0)

尝试:

Select * FROM TABLE
ORDER BY ParentNo, OrderNo

如果我没记错的话,应该先找到空的。因此,通过parentNo对它进行排序将首先给出Null,然后对orderNo进行排序。所以会产生预期的效果。