起きている問題
faxをシステムから送信した時に、送信した履歴をデータベースにインサートし、送信履歴を閲覧できる画面を作っています。
送信済みのfaxに一部訂正をして、再送信した際は「再送信」という目印をつけようとしています。
送信履歴の表示時に、再送信のカウントをするとページ表示が遅くなると思ったので、インサート時に再送信フラグをつけようと思いました。
faxを大量送信した場合のことを考えて、クエリは最小で済むように考えたいですが、クエリの書き方がわかりません。
行いたいこと
例えば以下のfaxテーブルがある時、fax_codeが「a2」であるレコードを更に2回インサートした時、期待する結果となってほしいです。
faxテーブル
id | fax_code | resend |
---|---|---|
1 | a1 | 0 |
2 | a2 | 0 |
3 | a3 | 0 |
期待する結果
id | fax_code | resend |
---|---|---|
1 | a1 | 0 |
2 | a2 | 0 |
3 | a3 | 0 |
4 | a2 | 1 |
5 | a2 | 2 |
試したクエリ
query
1INSERT INTO `fax` (`id`, `fax_code`, `resend`) VALUES ('', 'a2', case when select count(`fax_code`) from `fax` where `fax_code` = 'a2' = 0 then '1' else '0' end)
MySQLのバージョンは5.7です。
レコードは削除されることはありません。
1文で行いたい理由は、コードをより簡潔にしたい為です。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー