我们有这四个表:
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 行到最大行的真正随机数方面似乎不太好-数字。首先,我不确定订单表中有多少行,这可能是另一个问题。
有没有更好的方法来查找表中的随机行?