mysql - SELECT 语句 WHERE BETWEEN 计算字段 - 空结果

标签 mysql

我在使用 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

enter image description here

最佳答案

您的陈述有误。您已经声明了 @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/

相关文章:

MySQL - 提取没有某些字段的所有数据?

mysql - 使用另一个表中的所有数据更新 MySQL 中的表

mysql - 将具有组合键的大型且频繁更新的 MySQL 表移动到 HDFS

mysql - 使用 MySQL 进行复杂的 SQL 查询?

php - 在 PHP/MySQL 中获取具有实际列名的列号

php - MySQL使用foreach将多个图像连接到相册并在页面上显示

mysql - 该程序在 MySQL 5 中有效,但在 MySQL6 中失败,为什么?

php - 无法在 mysql 上插入 utf8 字符(使用 utf8 排序规则、字符集和名称集)

android - onPostExecute 无法正确启动 Activity

mySql select语句获取重复条目的最后记录