我們有這四個表:以下是查找表中隨機行的一種可能方法嗎?有更好的方法嗎?
Store (
row bigint,
id uniqueidentifier,
name varchar
)
Products (
row bigint,
id uniqueidentifier,
storeID uniqueidentifier,
productname varchar
)
Customer (
row bigint,
id uniqueidentifier,
storeID uniqueidentifier,
fName,
lName,
email
)
orders (
row bigint,
id uniqueidentifier,
store_ID uniqueidentifier,
cust_id uniqueidentifier,
prod_id uniqueidentifier,
date datetime
)
我們需要找到訂單表30個的隨機行特定商店。
這是我第一次嘗試它:
select TOP 30 * from orders o inner join store s on o.Retailer_ID=s.ID
where s.Name='XXXX' and o.Row in (select ABS(CAST(CAST(NEWID() AS
VARBINARY) AS int)) %100000 from orders) and o.Retailer_ID =(select ID
from store s where s.Name= 'XXXX')
但我不是真正滿意的結果,因爲我覺得行的範圍絕不會單一數字和隨機運算方法,我做的只是在從第1行到第max-number行創建一個真正的隨機數似乎不是那麼好。我不確定第一個訂單表中有多少行可能是另一個問題。
有沒有更好的方法來查找表中的隨機行?
爲什麼不簡單做SELECT TOP ... ORDER BY NEWID()? –