我希望我能正确地解释这个...但我正在尝试更新一个包含重复序列的30k行的表中的列。
我之前用随机数填充了整个列:
UPDATE位置SET template = CAST((RAND()* 4)+1 AS UNSIGNED);
给出了:
等。在整个30k行中以随机的方式......
我想输入一个可以生成重复序列的查询,如:
跨所有30k行。
我一直在研究循环和自动增量,但无法使其工作。
任何帮助非常感谢:)
答案 0 :(得分:0)
也许使用变量会做例如
DROP TABLE IF EXISTS T;
CREATE TABLE T(ID INT, SEQNO INT);
INSERT INTO T VALUES (1,NULL),(2,NULL),(3,NULL),(4,NULL),(5,NULL),(6,NULL),(7,NULL);
UPDATE T
SET SEQNO = (SELECT IF(@RN = 2 ,@RN:=1,@RN:=@RN + 1) FROM (SELECT @RN:=0) R)
WHERE 1 = 1
+------+-------+
| ID | SEQNO |
+------+-------+
| 1 | 1 |
| 2 | 2 |
| 3 | 1 |
| 4 | 2 |
| 5 | 1 |
| 6 | 2 |
| 7 | 1 |
+------+-------+
答案 1 :(得分:0)
感谢您的建议......我很难找到答案,但最终找到了一些可以完全按照我的目的去做的事情。我必须承认,这远远超出了我的能力,但现在是:
SET @row_number = 0;
SET @max_num = 75;
update locations loc1
join (
select
if ((num % @max_num) = 0, @max_num, (num % @max_num)) as num2,
a.*
from (
select
(@row_number:=@row_number + 1) AS num,
loc.*
from locations loc
ORDER BY num
) a
order by num, num2
) loc2 on (loc2.id = loc1.id)
set loc1.colname = loc2.num2;