-2

この SQL ステートメントを実行できませんでしたが、何が間違っているのかわかりません。

これはSQLです:

INSERT INTO data
(id_user,id_inf)
VALUES
(
 (SELECT userid FROM t4_adsmanager_ads WHERE userid NOT IN (select id_user from data) ),
 (SELECT id     FROM t4_adsmanager_ads WHERE id     NOT IN (select id_inf from data))
)

私がやりたかったのはt4_adsmanager_ads、ユーザーが作成した広告があることです

id = 47のユーザーがt4_adsmanager_adsid= 1,2,3 の広告を持っているとします。

私が持っているデータテーブルで

     id   id_inf   id_user

そして、私はそれがそのようになりたいです

         id   id_inf   id_user
         50     1        47
         51     2        47
         52     3        47

編集:私のエラーはエラーではなく、うまくいきませんでしたthx

4

1 に答える 1

1

現在の構文では、副選択が正確に1つのレコードを返す必要がありますが、この例ではそうではありません。

テーブルの複合列にUNIQUEインデックスを作成することをお勧めします。data(id_user, id_inf)

ALTER TABLE data ADD UNIQUE INDEX (id_user, id_inf);

そしてINSERT ... SELECTIGNORE修飾子を使用する必要があります。

INSERT IGNORE INTO data (id_user, id_inf) SELECT userid, id FROM t4_adsmanager_ads;
于 2012-08-26T15:59:58.373 に答える