みなさん、こんにちは!これはそれほど難しいことではないと思いますが、MySQLの経験が浅く、これを行うための適切な方法を見つけるのに苦労しています。ばかげたことをしてしまいたくない。
そこで、順番を変えたい
食料品のリストを用意しました。
私はそれをこのように見せたいです:
id label position
-- ----- --------
81 Bread 1
82 Soup 2
83 Ham 3
84 Eggs 4
position
この方法で列を初期化するにはどうすればよいですか?
position
また、新しい行を挿入するときにフィールドを処理するにはどうすればよいですか?
私自身はまだphpMyAdminの人なので、これを簡単に配置する必要があります。
最初は、列をそのままauto_incrementできると思っていましたが、最初の注文位置として機能することを期待して、許可されていないようです。position
id
id
位置列を初期化して、新しく挿入された行を処理したら、それらを移動するのはそれほど難しいことではないと思いますか?position
フィールドを任意の2行に。でスワップする「スワップ」操作を実行することを想像していますid
。
「シフトアップ」または「シフトダウン」スワップ操作は、上または下の行を取得し、position
2つの連続したを実行して'UPDATE..
をスワップすると想像しposition
ます。私はこれを1つのクエリで簡単に行う方法を理解するのに十分なほどクールではありません(それが可能であれば)。そのため、PHPからは、力ずくでこれを達成するために複数のクエリを実行します。
私はこのような食料品リストを表示しています:
SELECT * FROM groceries WHERE 1 ORDER BY position ASC;
次のような新しい行を挿入したいと思っています。
INSERT INTO groceries (id, label, position)
VALUES (NULL, "Instant Noodles", NULL);
position
'auto-incrementのようにフィールドを自動化できない場合id
、' NULL'の代わりに、position
フィールドを何に設定する必要がありますか?position
最後に追加された/最大の位置+1と同じである
新しい行を挿入するにはどうすればよいですか?最大(またはゼロ)
を取得して1を追加するために、別のクエリを実行する必要がありますか?position