【问题标题】:how to select latest item on top of the list and rest of the item in sorted order如何按排序顺序选择列表顶部的最新项目和项目的其余部分
【发布时间】:2014-11-28 03:57:02
【问题描述】:

我正在使用 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 一样排在最前面,其余项目将排序

谢谢

【问题讨论】:

  • 添加项目时插入哪个表?
  • 如何找到新添加的项目 5。 CreationDate 是否不同?
  • 您正在使用多少张表。为什么提到 table1 和 table2?
  • 如果盒子名称是 PKS,它将转到 tabe2,而盒子的其余部分将转到表 1

标签: c# sql sql-server listbox


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    您很可能希望更改您的第一个查询以将您想要的查询放在首位,然后将第二个查询合并为您想要的列表其余部分。所以它会是这样的:

     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
    

    【讨论】:

    • 它给出了错误 - 关键字“ORDER”附近的语法不正确。这个新记录是什么?
    • 条件[newRecord] = true 应替换为一个条件,以确定您想要在选择框顶部显示的值。有什么方法可以识别这些记录,比如将名为 newRecord 的列设置为 true?我会更新我的答案,以便更好地向您展示我的意思。
    【解决方案3】:

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

    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 对数据进行排序。

    【讨论】:

    • 这个热量是多少?
    • 抱歉,现在是 CreationDate。请删除您的命令。我改变了答案。
    猜你喜欢
    • 1970-01-01
    • 2018-08-22
    • 2015-06-26
    • 2015-06-04
    • 2016-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-22
    相关资源
    最近更新 更多