2012-06-02 52 views
3

我懷疑這是否可能。mysql查詢幫助插入多個行中的幾個字段相同

我有兩個表

1)file_master

file_id | name 
----------------- 
1  | readme.txt 
2  | readme2.txt 
3  | readme3.txt 
4  | readme4.txt 
5  | readme4.txt 


2) user_file 

user_id | file_id 
----------------- 
1  | 2 
1  | 4 

我找一個這樣的查詢

INSERT INTO user_file (user_id, file_id) VALUES (1, SELECT file_id FROM file_master WHERE file_id <= 4); 

這應該是等同於

INSERT INTO user_file (user_id, file_id) VALUES (1, 1); 
    INSERT INTO user_file (user_id, file_id) VALUES (1, 2); 
    INSERT INTO user_file (user_id, file_id) VALUES (1, 3); 
    INSERT INTO user_file (user_id, file_id) VALUES (1, 4); 

在PHP我可以使用for循環構造多個Insert查詢。但我正在尋找一個純粹的SQL解決方案......如果可能的話。

在此先感謝。

回答

2
INSERT INTO user_file (user_id, file_id) 
    SELECT 1, file_id 
    FROM file_master 
    WHERE file_id <= 4; 
+0

謝謝你的...這很有用 – phpsessionid

1
INSERT INTO user_file (user_id, file_id) 
    SELECT 1, file_id FROM file_master WHERE file_id <= 4; 
+0

謝謝,這很有用 – phpsessionid

1

你差不多吧:

INSERT INTO user_file (user_id, file_id) SELECT 1, file_id FROM file_master WHERE file_id <= 4; 

INSERT … SELECT statement

+0

完美..這就是我正在尋找...非常感謝 – phpsessionid

+1

... [很多](http://en.wiktionary.org/ wiki /很多) – Gumbo

+0

是的:) ................. – phpsessionid