2

だから、私のコードはこのようになります

mysql_query("SELECT * FROM threads WHERE forum_id = '$id' ORDER BY type,posted DESC") or                                 
die(mysql_error());

「posted」はtime()の値であり、最新のものを一番上に置くために減少して選択されます。「type」には1または2が含まれます。2の場合、スレッドは固定されます。現在、投稿後にソートされますが、一番上(固定)にあるはずのものが一番下にあります。私が見逃している修正はありますか?

4

2 に答える 2

3

試す:ORDER BY type DESC, posted DESC

デフォルトでは、昇順でソートされます。注文する両方のフィールドの順序を指定する必要があります。

ドキュメントによる注文

于 2013-02-12T16:47:30.753 に答える
2

order by の asc/desc は、order by 句全体ではなく、個々のフィールドに適用されることを忘れないでください。

ORDER BY type DESC, posted ASC

MySQL は順序付けのための任意のロジックを受け入れることもできるため、より複雑な並べ替え要件については、次のようなものを使用できます。

ORDER BY IF(type=2, 0, 1) AS pinned ASC, posted DESC

任意のロジックが単純にソート可能なもの (数値や文字列など) を返す限り、ソートの複雑さに制限はありません。

于 2013-02-12T16:49:55.860 に答える