如何使用sql server在特定列w.r.t插入顺序上区分?

时间:2018-05-28 13:32:08

标签: sql sql-server tsql

这里我有一个sql表,如下所示

---------------------------
   id | element | parent_id
---------------------------     
    1  |   La   |    1
    2  |   Ce   |    1
    3  |   Pr   |    1
    4  |   Nd   |    1
    5  |   Sm   |    1
    6  |   La   |    1
    7  |   Ce   |    1
    8  |   Pr   |    1
    9  |   Nd   |    1
   10  |   Sm   |    1
   11  |   La   |    2
   12  |   Ce   |    2
   13  |   Pr   |    2
   14  |   Nd   |    2
   15  |   Sm   |    2
------------------- 

我希望下面的输出只有插入顺序为w.r.t parent_id

的元素
-------------
    element 
------------     
    La
    Ce
    Pr
    Nd
    Sm
------------

为此我将代码编写为

SELECT * FROM (SELECT distinct(element) from mytable where 
parent_id=1) A ORDER BY NEWID() 

用这个我输出

    element 
------------     
    La
    Ce
    Nd
    sm
    pr
------------

这不是我想要的,请帮我如何获取插入订单的元素

1 个答案:

答案 0 :(得分:5)

您可以使用GROUP BY代替DISTINCT

SELECT element
FROM mytable 
WHERE parent_id=1
GROUP BY element  
ORDER BY MIN(id)