我正在使用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()是否消除了返回重复的可能性?
答案 0 :(得分:1)
您不应该获得重复项,因为在这样一个简单的查询中,您无法选择同一行两次。
所以,简单的答案就是你有两行BikeID = 3
答案 1 :(得分:0)
尝试在BikeID之前添加DISTINCT