PDA

View Full Version : سوال: انتخاب ركورد به صورت رندوم ؟



ایمان مدائنی
سه شنبه 11 آبان 1389, 21:28 عصر
سلام دوستان
من يك برنامه دارم حالا ميخوام كه در اون مثلا هر چند ساعت يكبار داخل بانك رو سرچ كنه و يك آي دي به صورت رندوم از يك جدول رو بخونه و بهم اون آي دي رو بده !
مي خوام اون آي دي از آي دي هاي داخل همون جدول باشه
دوستان فقط كوئري رو بهم بدن كارم راه ميوفته

Reza_Yarahmadi
چهارشنبه 12 آبان 1389, 07:52 صبح
چند روش براي اين كار وجود داره. بستگي به طراحي بانك و ... داره.
SELECT top 1 * FROM TableName ORDER BY NEWID()

SELECT top 1 * FROM TableName ORDER BY CHECKSUM(NEWID())

Declare @Count int, @RandId int
Select @Count = Count(*) From TableName
SELECT @RandId = Cast((RAND((DATEPART(mm, GETDATE()) * 100000)
+ (DATEPART(ss, GETDATE()) * 1000)
+ DATEPART(ms, GETDATE())) * @Count) as int)
Select * From TableName Where Id = @RandId

Reza_Yarahmadi
چهارشنبه 12 آبان 1389, 11:49 صبح
دوست عزيز يك كوئري ساده داره فقط مشكل اينجاست كه يادم رفته
2 مورد اول كه گذاشتم فكر نميكنم پيچيده باشن!! يه Select ساده اند. ولي اينها روي جدولهاي با تعداد ركورد خيلي زياد سرعت كمي دارند.
مورد 3 هم كار خاصي انجام نميده اول يك id بصورت تصادفي انتخاب ميكنه بعد ركورد متناظرش رو انتخاب ميكنه. اين روش روي ركورد هاي خيلي زياد هم جواب ميده. توي اين روش ميتونيد تابع Rand رو بصورت ساده هم استفاده كنيد.