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

如何使用sql server对特定列w.r.t插入顺序进行区分?,sql,sql-server,tsql,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

这里我有一个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() 
有了这个,我得到的输出是



这不是我想要的,请帮助我如何获得插入顺序的元素

您可以使用
分组方式
而不是
不同的

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

如果您的
id
是一个自动递增的值,您可以(可能)对其进行排序。如果不是,并且您自己还没有构建一个方法来跟踪插入顺序,那么就没有办法做您想要做的事情。Sql server不会(自动)跟踪插入顺序。而且,
DISTINCT
不是函数,因此请删除括号。
SELECT element
FROM mytable 
WHERE parent_id=1
GROUP BY element  
ORDER BY MIN(id)