如何使用sql server对特定列w.r.t插入顺序进行区分?
这里我有一个sql表,如下所示如何使用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
---------------------------
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)