開発プロセス中に非常に複雑な問題に遭遇しました。
`order`、IDで並べ替えます
並べ替えはIDで並べ替えても同じです
同意を遵守する限り、予期せぬ結果は発生しません
上記のように、画像内のデータについて、role_id 1 のデータを 10 より上位にランク付けしたいと考えていますが、結果は予期せぬものになります。
SELECT * FROM `tbl` ORDER BY `role_sort` DESC , `role_id` DESC
たとえば、上の図のデータでは、role_id 1 が 10 より大きいデータをランク付けしたいと考えていますが、結果は予期せぬものになります。
SELECT * FROM `tbl` ORDER BY `role_sort` DESC , `role_id` DESC
テーブルには多くのコンテンツを渡す必要があります。人為的な介入を通じて重要な人物を指定された場所に連れて行きます! ! !
ルールはありません。「上」と「下」を自由に動かしてください。ご指摘の DISCUZ のソートが異なるため、現在は型を区別せずに 1 つのフィールドのみを検討しています。数値のサイズのみが、このコンテンツの位置を決定します。
こうあるべきだけど、ちょっと汚い。
たとえば、上の図のデータでは、role_id 1 のデータを 10 より上にランク付けしたいと考えていますが、結果は予期せぬものになります。
SELECT * FROM `tbl` ORDER BY `role_sort` DESC , `role_id` DESC
SELECT * FROM `tbl` ORDER BY `role_sort` DESC , `role_id` ASC
たとえば、上の図のデータで、role_id 1 のデータを 10 より上位にランク付けしたいと考えていますが、結果は予期せぬものになります。
SELECT * FROM `tbl` ORDER BY `role_sort` DESC , `role_id` DESC
SELECT * FROM `tbl` ORDER BY `role_sort` DESC , `role_id` ASC
SELECT * FROM `tbl` ORDER BY `role_sort` DESC , `role_id` DESC
この種の問題が発生したら、SQL ステートメントを変更するだけではだめですか?
desc は逆順で、大きいものから小さいものへと配置されています。 もちろん、10 は 1 の前にランク付けされます。 role_id には asc を使用します
OK 、
SELECT * FROM `tbl` ORDER BY `role_sort` DESC , `role_id` ASC
如,上图的数据,我现在想把role_id为1的数据排到10的上面,但是,结果出乎了意料。
SELECT * FROM `tbl` ORDER BY `role_sort` DESC , `role_id` DESC
SELECT * FROM `tbl` ORDER BY `role_sort` DESC , `role_id` ASC