1

現在、次のクエリを使用して、データベース内のどのプロジェクトにマイルストーンが関連付けられていないかを判断しています。

SELECT P.project_id, COUNT(M.milestone_id) as count FROM projects P
LEFT JOIN milestones M USING(project_id)
GROUP BY P.project_id
HAVING count < 1

そしてそれは戻ります:

project   count
---------------
9         0
34        0
32        0
41        0

INSERTそのテーブルの各project_idの新しいマイルストーン行に移動するにはどうすればよいですか?

4

1 に答える 1

3

INSERT...SELECTステートメントを使用できます

INSERT INTO tableName (project_ID)
SELECT  P.project_id
FROM    projects P
            LEFT JOIN milestones M 
                USING(project_id)
GROUP BY P.project_id
HAVING count < 1

新しい行を挿入するテーブルの名前に変更tableNAmeします。

更新 1

INSERT INTO tableName (project_ID, colA, colB, colC)
SELECT  P.project_id, colA, colB, colC
FROM    projects P
            LEFT JOIN milestones M 
                USING(project_id)
GROUP BY P.project_id
HAVING count < 1

ここで疑問が生じます。列に存在しない値が必要な場合はどうすればよいでしょうか? そのための仮想値を作成できます。

INSERT INTO tableName (project_ID, field1, field2, field3)
SELECT  P.project_id, '' AS field1, 0 AS field2, NULL AS field3
FROM    projects P
            LEFT JOIN milestones M 
                USING(project_id)
GROUP BY P.project_id
HAVING count < 1
于 2012-08-05T14:13:27.697 に答える