3

これが可能かどうかは疑問です。

私は2つのテーブルを持っています

1) ファイルマスター

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 ループを使用して複数の挿入クエリを作成できます。しかし、純粋な SQL ソリューションを探しています...可能であれば。

前もって感謝します。

4

3 に答える 3

2
INSERT INTO user_file (user_id, file_id)
    SELECT 1, file_id 
    FROM file_master 
    WHERE file_id <= 4;
于 2012-06-02T19:22:00.367 に答える
1
INSERT INTO user_file (user_id, file_id) 
  SELECT 1, file_id FROM file_master WHERE file_id <= 4;
于 2012-06-02T19:21:19.607 に答える
1

あなたはほぼ正しいです:

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

INSERT … SELECTステートメントを参照してください。

于 2012-06-02T19:22:16.353 に答える