代码之家  ›  专栏  ›  技术社区  ›  Darpan Ganatra

更新mysql中表的10%

  •  1
  • Darpan Ganatra  · 技术社区  · 7 年前

    我正在查看一个280万条记录表,并试图找到一种方法来有效地更新MySQL中10%的记录中标记为“Control”和“X”的列。

    一种方法是使用select创建单独的表:

    从表order by rand()中选择*0.10

    然后通过引用新的较小的表来更新原始表,但是我想知道是否有一种更简单/更快的方法。

    1 回复  |  直到 7 年前
        1
  •  3
  •   Bill Karwin    7 年前

    UPDATE MyTable SET control='x' WHERE RAND() < 0.10;
    


    SELECT * FROM MyTable WHERE RAND() < 0.10;
    

    SELECT * FROM MyTable ORDER BY RAND() LIMIT ?