我正在使用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一样位于顶部,其余项目将排序
由于
答案 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订购数据。