如何使用NEWID()返回两个随机行?

时间:2012-01-21 18:11:38

标签: sql sql-server tsql

我正在使用SQL Server 2008.

我有一个查询从一个名为Bikes的表中提取两个随机的BikeID。该表如下所示:

 BikeID     BikeName
 1          Bob
 2          Cindy
 3          Carl
 4          Joe
 5          Jane

我使用NEWID()函数将两个随机的BikeID拉出来:

SELECT     TOP 2 BikeID
FROM       Bikes
ORDER BY   NEWID()

我的结果如下:

 Row - BikeID
 1     5
 2     1

 Row - BikeID
 1     3
 2     4

 Row - BikeID
 1     2
 2     5

 Row - BikeID
 1     3
 2     3

我的问题是我想要重复,这意味着我得到两次返回相同的数字,请参阅最后一个示例结果集。我不确定NEWID()是否可以两次返回完全相同的数字。如果没有,那么我必须在其他地方出现故障。

这些实际上并不是我正在制作的结果。这些结果会出现在我调用此查询的网页上。所以,我在网页上得到重复。我没有使用数据库查询编写器中的SQL来重现这些结果。

这是从查询中获取两个随机行的最佳或正确方法吗? NEWID()是否消除了返回重复的可能性?

2 个答案:

答案 0 :(得分:1)

您不应该获得重复项,因为在这样一个简单的查询中,您无法选择同一行两次。

所以,简单的答案就是你有两行BikeID = 3

答案 1 :(得分:0)

尝试在BikeID之前添加DISTINCT