を解析しよう:私はCOALESCEが何をするかを理解しながら私は(MySQLのインストールから)このSQLが実際に何をするかを理解しようとしているこのSQL
IF(coalesce(a.entity_id, 0) != 0, 0, 1)
することは私にはIF文があるかを理解していませんそれを変更する。
を解析しよう:私はCOALESCEが何をするかを理解しながら私は(MySQLのインストールから)このSQLが実際に何をするかを理解しようとしているこのSQL
IF(coalesce(a.entity_id, 0) != 0, 0, 1)
することは私にはIF文があるかを理解していませんそれを変更する。
私は思う:
合体(a.entity_idを、0) - a.entity_idがnullでない場合は1他、場合の結果として0を取得し、
を最初のNULLでない値を返します。
a.entity_id = NULL =>合体= 0 => = 1
a.entity_idがnullでない場合=>合体= a.entity_id => = 0
合体最初NONを返す場合-n ullの引数。したがって、a.entity_id
がnullの場合、coalesceは0を返します。包含するif()は、引数がゼロでないかどうかをチェックし、0または1を返します。
基本的には、複雑な方法でa.entity_id IS NULL
を書きます。
IF()
の機能はです。基本的には、引数1(それはあなたがそのCOALESCEがやっていると理解ご質問から聞こえる。)
IF()
は、それが使用される文脈に応じて、数字または文字列値を返します。
mysql> SELECT IF(1>2,2,3);
-> 3
mysql> SELECT IF(1<2,'yes','no');
-> 'yes'
mysql> SELECT IF(STRCMP('test','test1'),'no','yes');
-> 'no'
それはa.entity_id IS NULL
を使用していないのは本当にファンキーな非読める方法です。
IF上でMySQLのマニュアルエントリー() - この句はa.entity_idがnullでない場合は0と評価され、1そうなりますようにhttp://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html#function_if
は、私には見えます。
a.entity_id
がNULL
とない0
ない値である場合、条件が満たされます。
'a.entity_id IS NULLまたはa.entity_id = 0' –