、、、、、の列idを持つテーブルがあります。ユーザーが [いいね] ボタンをクリックすると、対応するとを含む行がテーブルに追加され、が に設定されます。行がすでに存在し、列がすでに である場合、何も起こりません。user_idpost_idlikeviewsuser_idpost_idlike1like1
ユーザーが特定のページにアクセスすると、テーブルに行が追加され、対応するおよびuser_idがに設定されます。ただし、行が既に存在する場合は、値がインクリメントされます。post_idview1view
問題:を使用しようとしINSERT INTO mytable ... ON DUPLICATE KEY UPDATE like = 1ましたが、テーブルの主キーはidand ではなくuser_idorpost_idです。主キーを または のいずれかに設定するuser_idと、同じandpost_idを持つ行が存在する場合にのみ行が複製されるため、問題が発生します。user_idpost_id
この状況では、クエリをどのように作成する必要がありますか?
または、テーブルを 2 つのテーブルに分割することをお勧めしlikesますviews。user_idこの場合、行と列の両方に基づいて行を一意にする必要がありpost_idます。
または、複数の SQL クエリを実行しますか?
アドバイスしてください、ありがとう!