フォーラムアプリケーションを作成しています。私はボードを作成するスクリプトを持っています。 autoincremented board_id列に加えて、すべてのボードには、ホームページ上のボードを注文するために使用されるpositionという整数列があります。新しいボードが作成されるとき、私はデフォルトの位置を、与えられたcategory_idを持つボードテーブルの行の中で最大の値にします。ポジションは、カテゴリ内に配置されているため、重複する可能性があります。私はそれが理にかなったことを願う新しいボードはC_ID 1である場合mysqlの列の最大値を見つける方法は?
b_id | c_id | pos |
-------------------
1 | 1 | 1 |
-------------------
2 | 1 | 2 |
-------------------
3 | 2 | 1 |
-------------------
そして、私はC_ID 2で新しいボードを作成しています、位置は2でなければなりませんので、私は次のボードを持っている場合
...、位置が希望3。どうすればいいですか?
以下のクエリは、私が現在使用しているものですが、位置は常に0
INSERT INTO `forum_boards` (
`title`,
`description`,
`category_id`,
`position`
) VALUES (
'Suggestion Box',
'Have an idea that will help us run things better? Let us know!',
'1',
'(SELECT MAX(position), category_id FROM forum_boards WHERE category_id = 1)+1'
)
最初のアプローチでは、カテゴリが空の場合はどうなりますか? selectコマンドは0を返しますか? – ShoeLace1291
@ ShoeLace1291。 。 。最初のアプローチは 'NULL'を返します。それはあなたが使っていたコードです。その場合、2番目は '1'を返します。 –
2番目のアプローチは完全に機能しました!ありがとう – ShoeLace1291