MySQL ifnull のネストされた使用ifnull をネストする方法があるかどうかオンラインで検索しましたが、この使用法について言及している人はいないようです。ほとんどの場合、フィールドが空かどうかをチェックし、別の値に置き換えるだけです。 つまり: A から ifnull(a,b) を選択します。 しかし、私が遭遇した問題は、フィールドが 2 つあり、シナリオはおそらく次のようになることです。各ストアには vip_discount と simple_discount という 2 つの割引方法があり、これらはデータベースにある割引フィールドにちなんで名付けられています。vip_discount がメインの割引方法です。 つまり、vip_discount が空でない場合は、その値が返されます。その値が空の場合は、さらに simple_discount フィールドが空であるかどうかを判断する必要があります。空でない場合は simple_discount の値が返され、空でない場合は空の文字列が返されます。 ここで、ネストされた ifnull を使用して目的を達成できるかどうかを判断できるかどうかを検討しました。 長い間インターネットを検索しましたが、同様のブログが見つからなかったので、自分で試してみようと思いました。 A から割引として ifnull(vip_discount,ifnull(simple_discount,"")) を選択します。 これで問題は解決します。この SQL ステートメントの後に条件ステートメントを続け、他の条件クエリを補足することもできます。 MYSQL ifnullの落とし穴では、早速 SQL を見てみましょう。 アップデート lb_user u u.user_level = を設定します ( 選択 IFNULL(レベルID、u.user_level) lb_user_level から ここで、`status` = 1 かつ levelid > u.user_level かつ (アップグレードスコア < u.empirical または アップグレード合計金額 < u.total_consumption_money) レベルIDで並べ替え DESC 制限 1 ); 一見すると、この SQL 文は問題がなく、正常に実行されているように見えます。しかし、再度実行すると失敗します。その理由は、現在の条件に従ってデータを取得できず、返されたデータが空であるためです。データが空であるということは、データが存在しないということであり、データが存在するのではなく、フィールドが空であることに注意してください。調査後、SQL 文は次のように変更されます。 アップデート lb_user u u.user_level = IFNULL(( を設定します 選択 レベルID lb_user_level から ここで、`status` = 1 かつ levelid > u.user_level かつ (アップグレードスコア < u.empirical または アップグレード合計金額 < u.total_consumption_money) レベルIDで並べ替え DESC 制限 1 )、u.user_level); 変更後、実行は成功し、IFNULL エラーは発生しません。 理由をまとめると次のようになります。MYSQL では、IFNULL はデータが存在して NULL であるかどうかのみを判別できますが、データが見つからず NULL であるかどうかは判別できません。 上記は私の個人的な経験です。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Vueのウェブページスクリーンショット機能の詳しい説明
>>: ウェブページを作るときに知っておくべきいくつかのスキル
目次実装のアイデア:ステップ 1: TabBar と TabBarItem のコンポーネント カプセ...
個人的にはインストール版よりも解凍版の方がインストールしやすいと思います。早速、解凍版のインストール...
目次概要1. 簡単な例1.サブコンポーネントの<ng-content>ディレクティブを使...
通常のプログラムと比較すると、ダイナミック リンク ライブラリにはメイン関数がなく、一連の関数の実装...
forループfor ループは配列の要素をループします。文法: for (初期化変数; 条件式; 繰り...
前面に書かれた多くの場合、現在のプロジェクトの状況とビジネスニーズに基づいて Nginx をインスト...
mysql が閉じない場合の解決策:コンピュータのタスクバーを右クリックしてタスクマネージャーを開き...
負荷分散とは負荷分散は主に、専用のハードウェア デバイスまたはソフトウェア アルゴリズムによって実現...
展開環境:インストールバージョン Red Hat Cent 7.0 MYSQL バージョン 8.0....
概要MySQL には独自のイベント スケジューラもあり、これは Linux の crontab ジョ...
MySQL はネストされたトランザクションをサポートしていますが、それを実行する人は多くありません....
この記事の例では、商品スクリーニング機能を実装するためのjsの具体的なコードを参考までに共有していま...
データは企業の中核資産であり、企業にとって最も重要なタスクの 1 つです。注意しないと、データが意図...
アプリケーションシナリオデータ テーブルでは、アプリケーションは各データがいつ作成されたかを記録する...
目次一般的な配列メソッドconcat() メソッドjoin() メソッドpop() メソッドpush...