0

計算がTRUEの場合は値を返し、FALSEの場合はFALSEを返すクエリをコミットしたいと思います。

SELECT 
IF(VALID,EMPLOYEE_NAME,"NULL") AS NAME,
IF(SALARY/DAYS > 1000, TRUE, FALSE) AS VALID;

クエリが終了するまで、VALID変数はMYSQLに認識されていないようです。
だから私の質問は:そのクエリ
の 有効性を評価するための可能な方法はありますか?

4

2 に答える 2

1

You can also do this with a subquery:

SELECT IF(VALID,EMPLOYEE_NAME,"NULL") AS NAME, VALID
from (select t.*, IF(SALARY/DAYS > 1000, TRUE, FALSE) AS VALID
      from t
     ) t

I'm not a big fan of replicating logic. I much prefer to use subqueries to define variables. This makes it much easier to change the definitions. In general, this doesn't affect performance, because (most) sql engines are smart enough to do the calculations with one read through the data.

于 2012-07-19T18:31:46.127 に答える
1

いいえ。同じクエリでエイリアスをそのように使用することはできません。

あなたは自分自身を繰り返す必要があります。

SELECT 
IF(SALARY/DAYS > 1000,EMPLOYEE_NAME,"NULL") AS NAME,
IF(SALARY/DAYS > 1000, TRUE, FALSE) AS VALID;
于 2012-07-19T15:02:26.610 に答える