1

私はこれについて多くの研究を行い、次のことを思いつきました。

INSERT INTO actives
SELECT email, active_date
FROM actives_ac
ON DUPLICATE KEY UPDATE active_date = IF (
    active_date < VALUES(active_date), VALUES(active_date), active_date
);

その結果、SQL Error (1136): Column count doesn't match value count at row 1.

emailフィールドVARCHAR(255)は両方でKEYありUNIQUE、両方のテーブルにあります。 フィールドですactive_dateDATE

アクティブ テーブルに新しいレコードがある場合はレコードを挿入しようとしてactives_ac.active_dateactives.active_dateます。

4

1 に答える 1

0

これは単に、挿入する値の数がテーブルの列の総数と一致しないことを意味します。値が挿入される列を指定して、より明確にするようにしてください。たとえば、

INSERT INTO actives (email, active_date)
SELECT email, active_date 
FROM actives_ac
.....

注: これを行う理由は、AUTO_INCREMENTed として設定された列があるためですよね?

于 2013-03-01T15:16:29.453 に答える