我想这对MySQL专业人士来说很容易。给定现有的已填充MySQL-InnoDB表,例如
key1 | key2 | foobar | position
其中key1和key2共同组成了主键,而position大部分仍然为NULL,用哪种SQL我最好用随机排序但迭代的整数值填充“ position”字段?例如。如果有4行,那么我想拥有(仅作为示例顺序):
3
1
4
2
背景:我想在网络应用中向用户显示表格,顺序应该是静态但随机的,即一旦随机决定但顺序可以预测。但是,有时我需要完全重新排列顺序,而表的其余部分保持不变。另外,有时我需要在表中添加几行新位置,但是这些新行的位置不得低于任何现有行,因此需要对其进行迭代,而不是使用完全随机的行浮动。
最佳答案
您可能想要尝试这样的事情:
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;
关于mysql - MySQL:填充随机迭代的位置值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1708646/