1

そうです、これは非常に奇妙な問題であり、どのように簡潔に説明するのか疑問に思っています。

私は次のようにmysqlテーブルに行を記録するWPプラグインを持っています:

meta_id    post_id    meta_key    meta_value 
65387      605        _likes      9 

次に、私のページの1つで、最も気に入った投稿を選択するためのクエリを実行していました。meta_valueDESCによる注文。今、私は自分のサイトで、投稿が10に達すると、それ以上トップとして表示されず、クエリ結果から消えることに気づきました。奇数。

私はデータベースに行き、(PHPMyAdminで)meta_valueで並べ替えましたが、上位の結果として9が返されましたが、10は表示されませんでした!?

私が考えたのは、フィールドのタイプ(meta_value)です。これらは設定です。

#   Column      Type        Collation           Attributes  Null    Default
4   meta_value  longtext    latin1_swedish_ci               Yes     NULL    

値が10以上のときにORDERBYが機能しないことを意味する可能性のあることを誰かが考えることができますか?

ありがとう

4

2 に答える 2

2

列のデータ型を変更できない場合でも心配しないでください...それを行う必要はありません

castの整数の値だけにする必要があります 。ORDER BY

ユーザートリック:

ORDER BY meta_value+0;

また

ORDER BY CAST(meta_value as SIGNED);
于 2012-04-07T09:17:54.010 に答える
1

テキストフィールドは、数値フィールドのように順序付けられません。9は、降順(テキスト用語)では10よりも高い値です。10は1から始まり、整数ではなく1であるため、10の前に9が表示されます。

于 2012-04-07T09:13:03.037 に答える