私は脳の障害があり、私のクエリのための適切な解決策を見つけることができません。いくつかのアイデアがあるかもしれませんか?私は、次のwhere句で次の空きなしを見つけたいsqlクエリは次の空きIDを取得
:
マイ海流SQLコードは次のとおりです。
SELECT min(`no` + 1) AS nextNo
FROM `table1`
WHERE `no` + 1 not in (
SELECT `no`
FROM `table1`
WHERE `sno` = 20
)
これは私のテーブル値です:
id=1, no=1, sno=20
sno=20
場合、 nextNo=2
の私の結果とそれは正しいです。
しかし、私は助けをsno=10
、私**nextNo**=2
のための結果ではなく1
多くの多くの感謝を使用している場合!
より多くのサンプルデータと結果を提供してください。私は次のフリー・ノーが何を意味するのか分かりません。 –
あなたの問題では、 'select min'は' select max'でなければなりません。 –
このタイプのID生成は競合状態になりがちで、同じIDが2回選択され、同じNextNoが発行される可能性があります。システム生成IDを使用してこれを処理するか、またはあなたが取得するIDが挿入前に他の誰かに発行されないように独自のロック方法を構築する必要があります。 – xQbert