私たちは、cronjob を使用して毎日深夜に更新されるデータベースを持っており、外部 XML から新しいデータを取得します。
私たちが行うことは、すべての新しいコンテンツを挿入し、重複したキーがある場合はそのフィールドを更新することです。
INSERT INTO table (id, col1, col2, col3)
values (id_value, val1, val2, val3),
(id_value, val1, val2, val3),
(id_value, val1, val2, val3),
(id_value, val1, val2, val3),
ON DUPLICATE KEY UPDATE
col1 = VALUES (col1),
col2 = VALUES (col2),
col3 = VALUES (col3);
私たちが知りたいのは、実際に挿入された行です。つまり、新しい項目のリストを取得したいのです。新しい挿入を返すクエリはありますか? 基本的に、新しい挿入の数ではなく、すべての新しい ID を取得する必要があります。
ありがとう
ベストアンサー1
挿入/更新時に結果セット内の影響を受ける行の数を調べることで、この情報を取得できます。
マイグレーションドキュメンテーション状態:
ON DUPLICATE KEY UPDATE では、行が新しい行として挿入される場合は行ごとの影響行の値は 1 になり、既存の行が更新される場合は 2 になります。
答えを得て一度に 1 行ずつ挿入するには、ROW_COUNT と LAST_INSERT_ID を組み合わせる必要があります。