我在这里得到了这段代码:
UPDATE starinformation SET starOwner = -1 WHERE (
SELECT starinformation.starID
ORDER BY RAND( )
LIMIT 1
)
我想从表中更新一个随机行,其中包含从该表中提取的信息,并且仅影响1行。
答案 0 :(得分:0)
这种方法存在很多问题:
ORDER BY RAND() LIMIT 1
是一个主要的性能杀手:它将创建所有行的中间结果 - 即如果你的表包含1个megarows,你将触及它们中的每一个。我的建议是
SELECT ROUND(RAND()*COUNT(*)) AS num FROM starinformation
,返回$ num UPDATE starinformation SET starOwner = -1 ORDER BY [pk-field] LIMIT $num,1