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

时间:2014-11-28 03:57:02

标签: c# sql sql-server listbox

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

SELECT Boxname, CreationDate FROM tabe1 

 UNION  

 SELECT TrashBoxName, CreationDate FROM table2  

 order by CreationDate DESC

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

对于像1,7,3,9这样的示例项目,当我添加5时,它会像5 1 3 7 9一样位于顶部,其余项目将排序

由于

3 个答案:

答案 0 :(得分:0)

你很可能想要改变你的第一个查询以获得你想要的那个,然后将第二个查询联合起来,就像你想要列表的其余部分一样。所以它会像:

 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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

使用以下代码订购您希望的物品。

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 。新项目的RowID为1,其他为2,3,4 ...... 因此,我们可以根据RowID订购数据。