好了,也許這是更深刻,比我將永遠需要但去我希望能夠分析該嵌套循環,這樣我可以理解。嵌套循環計算
考慮:
mysql> describe t1;
+-------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| dt | datetime | NO | MUL | NULL | |
+-------+----------+------+-----+---------+-------+
1 row in set (0.00 sec)
和:
mysql> insert t1 values(101),(102),(103),(104),(105),(106),(107),(@c:=now());
Query OK, 8 rows affected (0.03 sec)
Records: 8 Duplicates: 0 Warnings: 0
和:
mysql> insert t1 select @c:[email protected]+interval 1 second from t1,t1 b,t1 c,t1 d,t1 e,t1 f;
Query OK, 262144 rows affected (1.94 sec)
Records: 262144 Duplicates: 0 Warnings: 0
到目前爲止,我有理解是(#ofrows)^(#oftables)=(#行添加)
我的問題我爲什麼會出現這種情況。我無法確切知道MySQL如何處理行和其他系統變量,以創建我在此提供的公式。我的方程式顯然是由服務器作爲使用2行數據和第6代表所執行的結果的動作的簡化版本同樣給出了64的輸出
沒有人知道這如何精確操縱?我一直在這2天,我不能讓我的腦海裏過的吧...
而且它爲什麼將超過6 ...也許36?排在表中的第一位?它只是從表中指定一個可能的可選擇行,並且是之前插入的now(),然後向該行添加1秒,並根據最終更改重置@c,因此不應該只通過邏輯插入幾行?
我想簡單地說我明白了什麼是在選擇@c具體發生了什麼:= @ c中的語句+間隔1秒部分,但在那之後我不太清楚......
我想簡單地說怎麼做:
select @c:[email protected]+interval 1 second;
+--------------------------+
| @c:[email protected]+interval 1 second |
+--------------------------+
| 2014-07-20 18:17:50 |
+--------------------------+
1 row in set (0.00 sec)
轉成這樣:
...
Query OK, 262144 rows affected (1.94 sec)
Records: 262144 Duplicates: 0 Warnings: 0