如何按排序顺序选择列表顶部的最新项目和项目的其余部分

本文关键字:新项目 项目 余部 最新 顺序 排序 选择 列表 顶部 何按 | 更新日期: 2023-09-27 18:32:22

我正在使用Winform和C#创建一个列表框。我正在表格中添加项目,并且使用以下查询根据创建日期从列表框中的两个表格加载项目列表。

SELECT Boxname, CreationDate FROM tabe1 
 UNION  
 SELECT TrashBoxName, CreationDate FROM table2  
 order by CreationDate DESC

但是我想选择列表框顶部新添加的项目和按排序顺序排列的其余项目。

例如,当我添加 1,7,3,9 时,它会排在 5 1 3 7 9 的顶部,其余项目将排序

谢谢

如何按排序顺序选择列表顶部的最新项目和项目的其余部分

我认为这应该可以解决问题-

(
    select top 1 Boxname,CreationDate from table1 order by CreationDate desc
)
union
(
    select BoxName, CreationDate from table2  order by CreationDate asc
)

您很可能希望更改第一个查询以获取所需的查询,然后将第二个查询合并为所需的列表其余部分。所以它会像这样:

 SELECT TOP 1 Boxname, CreationDate, 1 as newOrder FROM tabe1
 UNION  
 SELECT TrashBoxName, CreationDate, 2 FROM table2  
 ORDER BY newOrder ASC, CreationDate DESC

或者,您可能希望在第一个查询中使用 where 子句来获取所有新记录:

 SELECT Boxname, CreationDate, 1 as newOrder FROM tabe1
 WHERE [...your condition to find the data you want at the top...]
 UNION
 SELECT TrashBoxName, CreationDate, 2 FROM table2
 ORDER BY newOrder ASC, CreationDate DESC

使用以下代码按您的意愿订购物品。

SELECT Boxname as Boxname, CreationDate, 1 AS RowID FROM tabe1 
UNION  
SELECT TrashBoxName as Boxname, CreationDate, 1 + Row_number() 
    OVER(ORDER BY CreationDate ASC) AS RowID FROM table2  
ORDER BY RowID ASC

我添加了新列 RowID。新项目的行 ID 为 1,其他为 2,3,4...因此,我们可以根据 RowID 对数据进行排序。