MySQL では、これら 2 つのクエリに違いはありますか?
SELECT * FROM .... ORDER BY Created,Id DESC
と
SELECT * FROM .... ORDER BY Created DESC, Id DESC
望ましい動作: "Created" (タイムスタンプ) による順序付け (降順) ですが、2 つのアイテムが同じ "Created" 値を持つ場合は、Id を使用した順序付け ( desc ) にフォールバックします。
MySQL では、これら 2 つのクエリに違いはありますか?
SELECT * FROM .... ORDER BY Created,Id DESC
と
SELECT * FROM .... ORDER BY Created DESC, Id DESC
望ましい動作: "Created" (タイムスタンプ) による順序付け (降順) ですが、2 つのアイテムが同じ "Created" 値を持つ場合は、Id を使用した順序付け ( desc ) にフォールバックします。
はい、違いがあります。デフォルトの順序は昇順であるため、次のようになります。
SELECT * FROM .... ORDER BY Created,Id DESC
Created
昇順、Id
降順で並べ替えます
SELECT * FROM .... ORDER BY Created DESC, Id DESC
降順Created
、Id
降順
もちろん違いはあります。最初CREATED
は昇順で並べ替え、複数ある場合はそれらの行をID
降順に並べ替えます。2 つ目CREATED
は、最初に降順で並べ替え、次にID
複数ある場合は降順で並べ替えます。
2番目のものはあなたが望むことをするべきです。
(もちろん、これには疑問が生じます。なぜ自分で試して調べなかったのですか?)
最初のものはうまくいかないと思いますか?
あなたができる
SELECT * FROM .... ORDER BY Created ASC, Id DESC
SELECT * FROM .... ORDER BY Created DESC, Id ASC
ただし、別のものを実行すると、わずかに遅くなります。
最初の例では、列にデフォルトの順序付け( ASC
)が使用されてCreated
います。
日付のデフォルトの並べ替えは、ASC (昇順) です。
したがって、最初のクエリには昇順のアイテムがあり、2 番目のクエリには降順のアイテムがあります。