首页 > 解决方案 > 如何使用 sql server 在特定列 wrt 插入顺序上有所不同?

问题描述

这里我有一个 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
------------------- 

我希望像下面这样的输出只有带有插入顺序 wrt 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
------------

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

标签: sqlsql-servertsql

解决方案


您可以使用GROUP BY而不是DISTINCT

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

推荐阅读