我在使用 MySQL 中的 select 语句时遇到问题。
我有两个陈述只是略有不同,第一个似乎有效,但第二个无效。第二条语句返回 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);
一些数据应该显示成两个但没有显示
SELECT *, fee - (receipts * -1) AS difference,
receipts * -1 as rec,
fee * @minOk as min, fee * @maxOk as max
FROM div.Data1
最佳答案
您的陈述有误。您已经声明了 @maxOk
,但在您的 BETWEEN
子句中使用了 @maxOkay
。
因为 @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);
关于mysql - SELECT 语句 WHERE BETWEEN 计算字段 - 空结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13070903/