mysql查询帮助插入多个字段相同的多行

时间:2012-06-02 19:18:28

标签: php mysql sql

我怀疑这是否可能。

我有两张桌子

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解决方案......如果可能的话。

提前致谢。

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

你几乎是对的:

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

请参阅INSERT … SELECT statement