ケーストリック; 「空のセット」処理

MySQLの古いバージョン(4+)で「空のセット」を処理できる小さなハックで、機能はありません。





小さなリクエストを作成するとき、次の問題で停止しました。データベースにリクエストされた情報がありませんでした。 次のようになりました。



  @var =(
    選択する
        ケース
            いつ
                 t1.fieldはnullではありません
            それから
                 t1.field
            他に
                 1
         field_nameとして終了
    から
         table1 t1
         t1.tid = t2.idでtable2 t2に参加します
    どこで
          t1.field2 = '_UNEXISTING_IN_DB_VALUE_'
     t1.tid descによる注文
    制限1
 ); 




このケースのブロックでは、関数、数学、論理演算などの単位を取得しようとしなかったため、何の助けにもなりませんでした。テストでは、「空のセット(0.06秒)」しかありませんでした。



松葉杖はすぐに次の形式で書かれたままにすることにしました。



  set @ var2 =(if if(@var is null、1、@ var)); 




私の旧友は、解決策を見つけるのを手伝い、次のアプローチをアドバイスしました。名前の代わりに列番号を使用し、通常のカウントを使用します。 その結果、正しいクエリは次のようになります。



  @var =(
    選択する
        ケース
            いつ
                カウント(1)> 0
            それから
                 t1.field
            他に
                 1
         field_nameとして終了
    から
         table1 t1
         t1.tid = t2.idでtable2 t2に参加します
    どこで
         t1.field2 = '_UNEXISTING_IN_DB_VALUE_'
     t1.tid descによる注文
    制限1
 ); 




こちらもご覧ください:

dev.mysql.com/doc/refman/4.1/en/all-subqueries.html



All Articles