web-dev-qa-db-ja.com

MySqlは選択の結果を挿入します

そのようなリクエストを実行できるかどうかを知りたいです:

INSERT INTO t2 (a, b) 
VALUES (
 SELECT a, b
 FROM `t1` AS o
 WHERE o.id NOT 
 IN (
  SELECT a
  FROM t2 
  )
)

T2をt1からのデータで埋めるという考え方ですが、構文が間違っているに違いありません。

ご協力いただきありがとうございます

31
Roch

VALUESステートメントから挿入する場合は、SELECTキーワードを使用しません。

INSERT INTO t2 (a, b) 
 SELECT a, b
 FROM `t1` AS o
 WHERE o.id NOT 
 IN (
  SELECT a
  FROM t2 
  )
52
Joe Stefanelli

valuesを削除します

お気に入り

INSERT INTO t2 (a, b) 
SELECT a, b
FROM `t1` AS o
WHERE o.id NOT 
IN 
(
  SELECT a
  FROM t2 
);

またはより読みやすい形式

INSERT INTO t2 (a, b) 
SELECT o.a, o.b
FROM `t1` AS o
LEFT JOIN t2 ON o.id=t2.a
WHERE t2.a IS NULL;
5
ajreal

クエリにVALUESは必要ありません。

3
Travyguy9