ホームページ  >  に質問  >  本文

mysql の結果を 2 つの列でソートしますが、「ホール」列が含まれます

私の最初の状況は次のとおりです:

リーリー

次のスキーマを使用してこのテーブルを生成できます:

リーリー

目標は、NULL forcedRank 列を含まないすべての行を、この forcedRank 列に記載されている正確な位置に配置することです。予想されるレンダリングは次のとおりです:

リーリー

ご覧のとおり、NULL でない場合、各行は forcedRank 列によってソートされた位置になります。 NULL 行が非 NULL 行によって占められていない位置にある legacyRank 列によってソートされたままであるが、強制された行は移動されない場合。

このシーケンスに従って、ORDER BYCASE WHEN 構文を次のように使用してみました。 リーリー

しかし、結果は私の期待を完全に満たすものではありませんでした:

リーリー

それでは、

legacyRank 列を移動せずに、forcedrank 行を超えて並べるにはどうすればよいでしょうか?

P粉118698740P粉118698740374日前375

全員に返信(1)返信します

  • P粉141925181

    P粉1419251812023-09-12 09:02:45

    NULL は、IS を使用する必要があるか、あなたの場合 IS NOT

    のように比較できません。 リーリー
    ######ヌル###### ######ヌル###### 63 ######ヌル###### ######ヌル###### ###7### ######ヌル###### 最初の答えでは正しい答えが得られないからです。 順序を維持し、数値を従来のランキングよりも強制的に小さくすると、次の結果が得られます リーリー レガシーランク強制ランキング0 ######ヌル######
    レガシーランク 強制ランキング
    0 1
    4 1
    2
    5
    2 6
    ######バイオリン###### 元の数値に小数点を追加して、新しい強制ランキングよりも大きくなるように順序を変更しました。

    4 1

    1

    ######ヌル######

    62 ######ヌル###### 5 ######ヌル###### ###7### ######ヌル######
    3
    2 6
    ######バイオリン######

    返事
    0
  • キャンセル返事