我一直在尋找無處不在,找不到像這樣的東西。我有兩個表格,表格t1
有每個a1
的值,b1
的值對於所有的a1
都是靜態的,只有一個入口。主鍵不是a1
或b1
。 t1
也有其他所有的靜態列a1
。MYSQL多行插入不存在
表二t2
有a2
和b2
值不是靜態的。 a2
和b2
都不是主鍵(我使用主鍵的獨立ID列)。
我的目標是導入t1
中不存在的所有a2
值。請記住,表1目前有大約200萬條記錄,而表2通常有150K-1M條目。
這個工程:
INSERT t1 (a1, b1, c1, d1)
SELECT a2, b2, 'constant1', 'constant2'
FROM t2 AS V2
WHERE NOT EXISTS (SELECT 1 FROM t1 WHERE a1=V2.a2)
,但只進入一個a2
進入t1
,留下缺少的條目。
這是我的想法:
SELECT a2, b2 FROM t2 AS V2
INSERT INTO t1 (a1, b1, c1, d1)
VALUES (V2.a2, V2.b2, 'constant1', 'constant2'),
(V2.a2, 'constant3', 'constant1', 'constant2'),
(V2.a2, 'constant4', 'constant1', 'constant2'),
(V2.a2, 'constant5', 'constant1', 'constant2'),
(V2.a2, 'constant6', 'constant1', 'constant2'),
(V2.a2, 'constant7', 'constant1', 'constant2'),
(V2.a2, 'constant8', 'constant1', 'constant2'),
(V2.a2, 'constant9', 'constant1', 'constant2'),
(V2.a2, 'constant10', 'constant1', 'constant2'),
(V2.a2, 'constant11', 'constant1', 'constant2'),
(V2.a2, 'constant12', 'constant1', 'constant2'),
(V2.a2, 'constant13', 'constant1', 'constant2')
WHERE NOT EXISTS (SELECT 1 FROM t1 WHERE a1=V2.a2)
是這樣的可能嗎? (這顯然不起作用,主要的語法錯誤)。
樣品DATA FROM實際的表:
+---------+------+-------------+-------------+--------------+
| id | name | destination | application | durationRate |
+---------+------+-------------+-------------+--------------+
| 45013 | 1 | 1305200 | audio | 0 |
| 335203 | 2 | 1305200 | audio | 0.014 |
| 625393 | 3 | 1305200 | audio | 0.005928 |
| 956657 | 4 | 1305200 | audio | 0 |
| 1251735 | 5 | 1305200 | audio | 0 |
| 1560365 | 6 | 1305200 | audio | 0.02 |
| 1868995 | 7 | 1305200 | audio | 0.014 |
| 2200259 | 9 | 1305200 | audio | 0.014 |
| 2517971 | 10 | 1305200 | audio | 0.018 |
| 2813049 | 11 | 1305200 | audio | 0.018 |
| 3121679 | 12 | 1305200 | audio | 0.00775 |
| 3430309 | 8 | 1305200 | audio | 0 |
| 45015 | 1 | 1305201 | audio | 0 |
| 335205 | 2 | 1305201 | audio | 0.014 |
| 625395 | 3 | 1305201 | audio | 0.006552 |
| 956659 | 4 | 1305201 | audio | 0 |
| 1251737 | 5 | 1305201 | audio | 0 |
| 1560367 | 6 | 1305201 | audio | 0.02 |
| 1868997 | 7 | 1305201 | audio | 0.014 |
| 2200261 | 9 | 1305201 | audio | 0.014 |
| 2517973 | 10 | 1305201 | audio | 0.018 |
| 2813051 | 11 | 1305201 | audio | 0.018 |
| 3121681 | 12 | 1305201 | audio | 0.00775 |
| 3430311 | 8 | 1305201 | audio | 0 |
| 45017 | 1 | 1305202 | audio | 0 |
| 335207 | 2 | 1305202 | audio | 0.014 |
| 625397 | 3 | 1305202 | audio | 0.00468 |
| 956661 | 4 | 1305202 | audio | 0 |
| 1251739 | 5 | 1305202 | audio | 0 |
| 1560369 | 6 | 1305202 | audio | 0.02 |
| 1868999 | 7 | 1305202 | audio | 0.014 |
| 2200263 | 9 | 1305202 | audio | 0.014 |
| 2517975 | 10 | 1305202 | audio | 0.018 |
| 2813053 | 11 | 1305202 | audio | 0.018 |
| 3121683 | 12 | 1305202 | audio | 0.00775 |
| 3430313 | 8 | 1305202 | audio | 0 |
+---------+------+-------------+-------------+--------------+
36 rows in set (0.00 sec)
在我的示例表,a1
= destination
,b1
= durationRate
,c1
= name
,d1
= application
有12層不同的速率通過name
定義甲板。
爲什麼你希望它從T2插入12行至t1?如果你從t1和t2的每一個顯示少量的樣本數據,那麼你可能會更清楚,因此你期望插入t1的哪些行? – kaj 2012-04-06 06:50:16
肯定沒有問題 – necival 2012-04-06 16:08:42