次のMySQLの構文が正しく動作:INSERT COUNT IF()= 0
SELECT
IF (
(SELECT COUNT(id) FROM preorder) = 0,
1,
(SELECT MAX(id) + 1 FROM preorder)
) AS X
これは私がテーブルの前順に挿入する一つの値を与えます。試してみると
INSERT INTO preorder (id)
VALUES
(SELECT
IF (
(SELECT COUNT(id) FROM preorder) = 0,
1,
(SELECT MAX(id) + 1 FROM preorder)
) AS X)
もう動作しません。 MySQLはちょうど私にmenual :-)を読むように指示します。
私の独自の自動インクリメンタルフィールドを作成することが目的です。カウントがゼロの場合は1を挿入し、カウントがゼロでない場合はidカラムの最大値を挿入します。
編集:私はそれは、次の構文で動作するように管理さ :
INSERT INTO preorder (id)
VALUES
(
IF (
(SELECT COUNT(id) FROM preorder AS Y) = 0,
1,
(SELECT MAX(id) + 1 FROM preorder AS X)
)
)
がより良い方法はありますか?
なぜあなた自身の自動インクリメントフィールドが必要ですか?既存のものに何が問題なの?また、スキームを使用して行を削除した場合、次に何かを挿入すると、重複が発生します。 – kba
何のために良い方法がありますか?あなたは正確に何を達成しようとしていますか?列に番号を付けるだけの場合は、 'AUTO_INCREMENT'を再作成しないでください。ここでの最終目標は何ですか? – Naltharial
Kristian、私が使用しているテーブルは、一時的なデータを格納するのに使われるので、もう少し柔軟性が必要です。 Naltharial、私はちょうど私のID番号に関するより柔軟性を得る方法を理解しようとしています。私はこのアプローチが正確ではないかもしれないことを認識しています。 今のところ、ここに投稿したのとまったく同じ、より良い代替構文を探しています。 – Mark