2013-08-01 93 views
0

我想做一個這樣的查詢:MySQL的:INSERT INTO用foreach像

INSERT INTO `gesdoc_docs_authorizations` 
    (`gesdoc_docs_id`, `id_profil_do`, `autorisation`, `personal_doc`) 
VALUES (
    (SELECT `id` 
    FROM `gesdoc_docs`), 
    (SELECT `id` 
    FROM `users_profil_do`), 
    1, 0 
    ); 

gesdoc_docs有40行,users_profil_do有700行。 我需要爲users_profil_do中的每行有andco_gesdoc_docs關聯的40行(所以通常我的查詢會插入28000行)。 這可能嗎?我怎樣才能做到這一點的MySQL查詢?

感謝您的幫助:)

回答

2

SELECT插入,當你不使用VALUES關鍵字。

INSERT INTO gesdoc_docs_authorizations 
    (`gesdoc_docs_id`, `id_profil_do`, `autorisation`, `personal_doc`) 
SELECT g.id, d.id, 1, 0 
FROM gesdoc_docs g 
JOIN users_profil_do d 

如果不使用ON子句指定連接條件,它把所有行的匹配,這會導致兩個表的完整笛卡爾積。

+0

感謝它的作品:)我不知道你可以使用沒有連接的JOIN列,很好學習這個! – TikTaZ

+0

@TikTaZ [INNER JOIN](http://en.wikipedia.org/wiki/Join_%28SQL%29#Inner_join)without join column will perform a Cartesian product。如果表t1已經(1),(2)和表t2有(3),(4),那麼't1 JOIN t2'將產生* 4 *組合:(1,3),(1,4),(2 ,3),(2,4)。 –