0

3 つの列 (imageId、reportId、counter) を持つテーブルがあります。テーブルの主キーは列 (imageId、reportId) です。カウンター列は、ペアを挿入しようとした回数のカウンターになります。 (imageId、reportId)。

たとえば、画像 "x.png" があり、100 人がこの画像にポルノが含まれていると報告した場合、値 ("x.png", "pornography") を持つテーブルの行のカウンターに 100 が必要です桁。次の人がこの画像をポルノとして報告するときは、カウンターを 101 にしておきます。

どうすればそのようなことができますか?

ありがとうございました

4

2 に答える 2

2

使用するINSERT ... ON DUPLICATE KEY UPDATE

INSERT IGNORE INTO table (imageId, reportId, counter) VALUES (1, 1, 0) ON DUPLICATE KEY UPDATE SET counter=counter+1

カウンター列のデフォルト値を 0 に設定して、これを使用することもできます。

INSERT IGNORE INTO table (imageId, reportId) VALUES (1, 1) ON DUPLICATE KEY UPDATE SET counter=counter+1
于 2013-01-19T13:59:54.840 に答える
2

このシナリオでは、テーブルに新しい行を追加することをお勧めします。これは、必要に応じてカウントを選択できるビューを提供できることを意味します。

レポートごとの新しい行の利点は、ユーザーがカスタム メッセージなどを追加できることです。

- アップデート

ビューの詳細については、 http://dev.mysql.com/doc/refman/5.0/en/view-syntax.htmlをご覧ください。

その中心では、クエリは次のような基本的なクエリになります

SELECT imageId, reportId, count(reportId) as count FROM training.reporttable group by imageId, reportId

以下に基本的な例を示します。

フィールド数の選択

注、私はあなたのサンプルデータに固執しましたが、reportIdとimageIdは正規化する必要があります

于 2013-01-19T13:58:40.143 に答える