我有这个SQL查询,它将在表superstatistics_counter
中产生10万行。
我在互联网上找到了这个,但这对我来说很神奇。我有基本的无法解决的SQL查询(我知道插入和选择是如何工作的),但不是这样的。我用谷歌搜索,但我仍然不清楚......
括号中的陈述是什么意思? t
,t2
,...是什么意思? @row?
INSERT INTO superstatistics_counter(nid, totalcount, daycount,timestamp) SELECT @row := @row + 1 as row, 100, 50, NOW() FROM
(select 0 union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) t,
(select 0 union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) t2,
(select 0 union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) t3,
(select 0 union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) t4,
(select 0 union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) t5,
(SELECT @row:=0) t6
感谢。
答案 0 :(得分:2)
最后一行(SELECT @row:=0) t6
将变量@row初始化为0,然后第一行的循环@row := @row + 1
每次增加1。
t
到t5
是交叉连接的,每个都有10行。因此生成10 * 10 * 10 * 10 * 10 = 100000行。
100000行从@row
获取1到100000的ID。
答案 1 :(得分:0)
每行中的选择0到9为每列创建10条记录。所以你有5列(它们别名为t,t2,t3,t4,t5),值为0到9.它是交叉连接创建100,000条记录。
我们使用@。
定义变量@row:= @row + 1作为循环运行,增量为+1。