【问题标题】:Display a record as the first row将记录显示为第一行
【发布时间】:2015-03-26 07:01:21
【问题描述】:

我在 asp.net 页面中有一个 GridView。

我正在从SQL 数据库中获取记录并将此网格绑定到它。绑定网格的查询如下所示:

Select column1,column2,column3 from Table where condition=value.

在 Gridview 中,column1 是 LinkButton。我必须选择 1 个随机记录,这应该是网格中的第一个记录 - 也是唯一的“可点击”链接按钮。

所有其他记录仍将显示在网格中,但不会启用任何链接按钮。我有在 SQL 中选择随机记录的查询:

Select top 1 column1 from Table where condition=value order by newid()

我的问题:如何将此随机记录作为第一个记录 网格。

【问题讨论】:

  • 您可以使用 Union 并组合查询。

标签: asp.net sql-server gridview


【解决方案1】:

您是否希望仅第一条记录是随机的,或者网格视图中的所有记录都以随机顺序排列,这不是很清楚。

要以随机顺序对所有记录进行排序,只需将order by newid() 添加到您的查询中。但是,如果您只希望第一条记录是随机的,并保持其他记录的顺序,您可以这样做:

SELECT column1, column2, column3, RowNumber
FROM (
    SELECT column1, column2, column3, ROW_NUMBER() OVER (ORDER BY NEWID()) As RowNumber
    FROM table
    WHERE condition
) InnerSelect
ORDER BY CASE WHEN RowNumber = 1 THEN -1 ELSE column1 END

注意: order by 子句中的 -1 假设 column1 是一个整数,并且只有 0 或更高的值。如果不是这种情况,您需要将其更改为适合您希望按结果集的其余部分排序的列中的值的另一个值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-27
    相关资源
    最近更新 更多