我认为这对MySQL专业人员来说很容易。给定一个填充的MySQL-InnoDB表,如
key1 | key2 | foobar | position
其中key1和key2一起组成主键,并且位置大部分仍然是NULL,我最好使用随机排序但迭代的整数值填充“position”字段的SQL?例如。如果有4行,那么我想要(仅作为示例顺序):
3
1
4
2
背景:我想在Web应用程序中向用户显示该表,并且该顺序应该是静态的但是随机的,即一旦随机决定,然后以可预测的顺序。有时我需要完全重新调整订单,而表格的其余部分保持不变。此外,我有时需要使用新位置向表中添加几行,但是这些新行的位置不能低于任何现有行,因此需要对其进行迭代,而不是使用完全随机的浮。
答案 0 :(得分:1)
你可能想尝试这样的事情:
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;