将记录显示为第一行

时间:2015-03-26 07:01:22

标签: asp.net sql-server gridview

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

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

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

在Gridview中,column1是LinkButton。我必须选择1个随机记录,这应该是网格中的第一个记录 - 并且唯一的可点击的记录是' LinkBut​​ton的。

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

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

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

1 个答案:

答案 0 :(得分: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或更高的值。如果不是这种情况,您需要将其更改为适合您希望按结果集其余部分排序的列中的值的其他值。