私の最初の状況は次のとおりです:
リーリー次のスキーマを使用してこのテーブルを生成できます:
リーリー 目標は、NULL forcedRank
列を含まないすべての行を、この forcedRank
列に記載されている正確な位置に配置することです。予想されるレンダリングは次のとおりです:
ご覧のとおり、NULL でない場合、各行は forcedRank
列によってソートされた位置になります。 NULL 行が非 NULL 行によって占められていない位置にある legacyRank
列によってソートされたままであるが、強制された行は移動されない場合。
このシーケンスに従って、ORDER BY
で CASE WHEN
構文を次のように使用してみました。
リーリー
リーリー
それでは、legacyRank 列を移動せずに、forcedrank 行を超えて並べるにはどうすればよいでしょうか?
P粉1419251812023-09-12 09:02:45
NULL
は、IS
を使用する必要があるか、あなたの場合 IS NOT
レガシーランク | 強制ランキング |
---|---|
0 | ######ヌル######1 | ######ヌル######
4 | 1 |
2 | |
5 | ######ヌル######|
2 | 6 | ###7### ######ヌル######
######バイオリン###### | 最初の答えでは正しい答えが得られないからです。元の数値に小数点を追加して、新しい強制ランキングよりも大きくなるように順序を変更しました。 | 順序を維持し、数値を従来のランキングよりも強制的に小さくすると、次の結果が得られます
レガシーランク | |
0 |
1
######ヌル######
3 | ######ヌル######|
---|---|
2 6 | |
######バイオリン###### 返事 0 |