1

私は調査を行いましたが、これを行う方法がわかりません。別のテーブルから挿入するのは非常に簡単ですが、WHERE ステートメントを含めたいと思います。

テーブル A の単一の列 column_Q の値をテーブル B の column_Q WHERE テーブル A の column_W = '100' に挿入したいのですが、column_Q はテーブル B にまだ存在しません。

私は試した:

INSERT INTO B (column_Q) select DISTINCT(column_Q) 
from A WHERE column_W = 100 AND b.column_Q<>a.column_Q;

私はどこで間違っていますか?

PS。両方のテーブルにはすでに値が含まれています。どのフィールドも Null ではありません。

4

2 に答える 2

4
INSERT
INTO    b (q)
SELECT  DISTINCT q
FROM    a
WHERE   a.w = 100
        AND a.q NOT IN
        (
        SELECT  q
        FROM    b
        )

制約が定義されている場合b.qUNIQUE、次を使用します。

INSERT
IGNORE
INTO    b (q)
SELECT  q
FROM    a
WHERE   w = 100
于 2012-06-05T11:20:16.827 に答える
1

「割り当て」の左側を参照することはできません。これは、比較する B からの現在の行がないためです (挿入する行になります)。同様の行が B に既に存在するかどうかを確認する必要があります。 :

INSERT INTO B (column_Q)
SELECT DISTINCT(A.column_Q) 
FROM A 
WHERE A.column_W = 100
AND NOT EXISTS (
    SELECT *
    FROM B
    WHERE B.column_Q = A.column_Q
    );
于 2012-06-05T11:27:19.107 に答える