gpt4 book ai didi

mysql - 更新表中的随机行

转载 作者:行者123 更新时间:2023-11-30 00:29:10 25 4
gpt4 key购买 nike

我这里有这个代码:

    UPDATE starinformation SET starOwner = -1 WHERE (
SELECT starinformation.starID
ORDER BY RAND( )
LIMIT 1
)

我想使用从该表中提取的信息来更新表中的随机行,并且仅影响 1 行。

最佳答案

这种方法有很多问题:

  • MySQL 不允许将修改外部查询与选择子查询相结合来访问同一个表
  • ORDER BY RAND() LIMIT 1 是一个主要的性能 killer :它将创建所有行的中间结果 - 即,如果您的表包含 1 个巨行,您将触及其中的每一个。

我的建议是

  • 总是有一个可排序的单字段 PK
  • 运行SELECT ROUND(RAND()*COUNT(*)) AS num FROM starinformation,返回$num
  • 运行UPDATE starinformation SET starOwner = -1 ORDER BY [pk-field] LIMIT $num,1

关于mysql - 更新表中的随机行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22648513/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com