我想更新表中随机选择的50%的行。有什么办法吗?
编辑:只是为了阐明它应该始终更新记录的50%,但是必须随机选择这50%的行(例如,不仅是前50%的行)。换句话说,应平均地更新所有其他记录。
最佳答案
应该这样工作:
UPDATE table SET x = y WHERE RAND() < 0.5
是的,经过测试,可以正常工作。但是,当然,平均只有50%的行,而不是50%的行。
正如SQL 92规范中所写,必须为每个元组执行
WHERE
子句,因此必须重新评估rand()
以产生预期的结果(而不是选择全部或根本不选择任何行)。摘自规范(重点是我的):
关于mysql - MySQL:如何更新随机选择的50%的行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11087059/