2

MySQL の select ステートメントに問題があります。

わずかに異なる 2 つのステートメントがあります。最初のステートメントは機能しているように見えますが、2 番目のステートメントは機能していません。2 番目のステートメントは、0 の結果を返します。私は何が欠けていますか/間違っていますか?

変数を設定する

SET @maxOK = 1.2;
SET @minOK = .8;

1# 間にない

SELECT *, fee - (receipts * -1) AS difference
FROM div.Data1
WHERE (receipts * -1) NOT BETWEEN (fee * @minOK) AND (fee * @maxOkay);

2# 間

SELECT *, fee - (receipts * -1) AS difference,
          receipts * -1 as rec,
          fee * @minOk as min, fee * @maxOk as max
FROM div.Data1
WHERE (receipts * -1) BETWEEN (fee * @minOK) AND (fee * @maxOkay);

2 つに表示されるはずのデータが表示されない

SELECT *, fee - (receipts * -1) AS difference,
          receipts * -1 as rec,
          fee * @minOk as min, fee * @maxOk as max
FROM div.Data1

ここに画像の説明を入力

4

2 に答える 2

0

Try including the where clause components in your SELECT. ie:

SELECT (fee * @minOK) as wheremin, (fee * @maxOkay) as wheremax, *, fee - (receipts * -1) AS difference, receipts * -1 as rec, fee * @minOk as min, fee * @maxOk as max FROM div.Data1 WHERE (receipts * -1) BETWEEN (fee * @minOK) AND (fee * @maxOkay);
于 2012-10-25T14:37:56.980 に答える
0

あなたの発言には誤りがあります。宣言しましたが、節で@maxOk使用@maxOkayしています。BETWEEN

@maxOkayどこにも宣言されていないため、初期化されているため、ステートメントは本質的に次のようNULLになります

SET @maxOK = 1.2;
SET @minOK = .8;

SELECT *
       , fee - (receipts * -1) AS difference
       , receipts * -1 as rec
       , fee * @minOk as min
       , fee * @maxOk as max
FROM Data1
WHERE (receipts * -1) BETWEEN (fee * @minOK) AND NULL

ステートメント_

SET @maxOK = 1.2;
SET @minOK = .8;

SELECT *
       , fee - (receipts * -1) AS difference
       , receipts * -1 as rec
       , fee * @minOk as min
       , fee * @maxOk as max
FROM Data1
WHERE (receipts * -1) BETWEEN (fee * @minOK) AND (fee * @maxOK);
于 2012-10-25T14:49:23.250 に答える