代码之家  ›  专栏  ›  技术社区  ›  Philipp Lenssen

MySQL:用随机迭代的位置值填充

  •  0
  • Philipp Lenssen  · 技术社区  · 15 年前

    key1 | key2 | foobar | position
    

    其中key1和key2一起构成主键,而position大部分仍然是空的,用什么样的SQL最好用一个随机排序但迭代的整数值填充“position”字段?E、 g.如果有4行,那么我希望有(作为示例顺序):

    3
    1
    4
    2
    

    1 回复  |  直到 15 年前
        1
  •  1
  •   Justin Grant    15 年前

    您可能需要尝试以下操作:

    CREATE TEMPORARY TABLE IF NOT EXISTS temptable (
        key1 int NOT NULL,
        key2 int NOT NULL,
        pos int NOT NULL auto_increment,
        PRIMARY KEY (key1, key2)
        )
    SELECT key1, key2 
    FROM yourtable
    ORDER BY RAND();
    
    UPDATE yourtable
    SET position = pos
    FROM yourtable INNER JOIN temptable
                   ON yourtable.key1 = temptable.key1
                      AND yourtable.key2 = temptable.key2;