SQL查询我不明白

时间:2017-09-18 16:04:05

标签: mysql sql

我有这个SQL查询,它将在表superstatistics_counter中产生10万行。 我在互联网上找到了这个,但这对我来说很神奇。我有基本的无法解决的SQL查询(我知道插入和选择是如何工作的),但不是这样的。我用谷歌搜索,但我仍然不清楚......

括号中的陈述是什么意思? tt2,...是什么意思? @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

感谢。

2 个答案:

答案 0 :(得分:2)

最后一行(SELECT @row:=0) t6将变量@row初始化为0,然后第一行的循环@row := @row + 1每次增加1。 tt5是交叉连接的,每个都有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。