示例讲解Mysql怎么查询大于指定值的数据

显然,MySQL检查大于某个值的数据只需要三步:使用WHERE列>值进行过滤,列名和值类型必须匹配,空结果必须检查两次。

为了扩展这一点,我们首先谈谈最重要的事情。
去年我们在做一个电商项目的时候,我们使用了SELECT FROM Orders WHERE amount > 1 000;直接筛选高单价订单,秒出结果。
但有一个问题:如果和是浮点数,直接输入整数值1 000会报错。
它必须写为 > 1 000.00 或 > CAST('1 000' AS DECIMAL(1 0,2 ));。
另外,比如要查找生日大于当前日期的成员,必须使用 SELECT FROM Members WHEREbirthday>CURDATE();,而不能使用>today()。
还有一个更重要的细节。
去年,一位新人将> 8 0 写为> '8 0'。
结果,分数被列为字符串,导致 8 0 点和 8 点都被过滤。
这用行话来说就是雪崩效应。
事实上,前面的一小部分延迟会导致后面的大量延迟。

一开始我以为>和>=没有什么区别,后来发现不对劲。
例如,如果您要检查 1 8 岁及以上的年龄,则使用 > 1 8 岁会漏掉 1 8 岁的人。
您需要使用 >= 1 8 等等,还有一件事,如果该值是一个变量,例如 @min_age = 5 0; SELECT FROM users WHERE age > @min_age;,不能写为> '5 0',否则该变量根本不起作用 - 说实话有点令人困惑。

建议下次检查大于的值时,先验证类型没有对齐,然后尝试>=看看是否有鱼漏网。

mysql如何使用between查询区间

上周我的朋友正在学习 MySQL,并提到 BETWEEN 查询非常方便。

2 02 3 年,我教他如何使用,例如采访分数在8 0到9 0之间的学生:
sql 从分数在 8 0 到 9 0 之间的学生中进行选择;
日期查询也很简单,例如查找入学日期为2 02 4 年5 月的学生:
sql 从用户中选择“2 02 4 -05 -01 ”和“2 02 4 -05 -3 1 ”之间的注册日期;
字符串查询也很常见,例如搜索名称在 A-M 范围内的用户:
sql 从名称位于“A”和“M”之间的用户中选择;
如果您不想在某个范围内,请使用 NOT BETWEEN。
例如,如果您想检查分数是否不在 7 0 到 8 5 之间:
sql 从分数不在 7 0 到 8 5 之间的学生中选择;
他听后很高兴,说这样查数据方便多了。
我让他注意,当使用 BETWEEN 时,需要对列建立索引以使查询更快。
他还问我如果日期包含时间怎么办,我告诉他时间部分要单独处理。
他点点头,明白了。

我再次提醒他,使用BETWEEN时,一定要保证数据类型一致,不要格式错误。
他点点头说他记住了。

最后,我让他尝试一些实际应用,比如查看价格在1 00到5 00之间的产品。
他很乐意尝试。
BETWEEN 运算符确实很方便,而且代码看起来也不错。
我笑着说,确实,用得好可以提高效率。
他点点头,表示以后会多用。
算了,看来他已经学会了。

mysql如何使用between查询

老实说,BETWEEN 非常容易使用,尤其是在检查日期范围时。
我曾经做过一个分析用户活动的项目,我必须检查某个月的注册用户数。
只需使用“2 02 4 -01 -01 ”和“2 02 4 -01 -3 1 ”之间的 register_date 即可完成。
这比编写 register_date >= '2 02 4 -01 -01 ' AND register_date <= '2 02 4 -01 -3 1 ' 更容易且更不易出错。
但要注意时间部分。
如果有人凌晨签到,请使用“2 02 4 -01 -3 1 00:00:00”完美覆盖。

有趣的是,字符串比较在当时几乎是一个陷阱。
有一次我查名字,以为就用“张三”和“李思”之间,结果发现如果按照字典顺序排列,中间的“王五”就不见了。
查了资料发现,是依赖于字段排序规则的设置。
当时我们使用的是utf8 _general_ci,不区分大小写,所以“alice”和“Alice”被认为是相同的。
如果您使用 utf8 _bin 那么大写和小写字母被认为是不同的。
这样就好了,“a”和“A”就分开了。
我当时不明白为什么MySQL必须这样做。
大概是为了兼容性吧。

查询一系列数字其实很简单。
我查了一下记分卡,在返回的8 0到9 0分之间的申请中,确实有8 0到9 0分的申请,不多也不少。
但有一个小细节需要提醒。
如果要检查年龄,必须保证该字段为整数,否则可能会出错。
我有一个朋友忘记更改类别,结果选择了一个 2 0 岁到 3 0 岁之间的 1 9 岁女孩,这很有趣。

使用NOT BETWEEN时,最需要注意的是边界值。
例如,要检查年龄是否在 2 0 到 3 0 之间,请写为 Age NOT BETWEEN 2 0 AND 3 0。
这将包括 1 9 岁到 3 1 岁以上的人。
应该重写为 Age < 2> 3 0。
说实话,如果写得太多,很容易混淆,尤其是当您重复使用 NOT 时。

在实际的应用场景中,我认为最烦人的就是字符串作用域。
我曾经检查过城市名称,发现“Beijing”和“Beijing”实际上是分开的,因为默认排序规则是不区分大小写的。
后来我改用utf8 _bin。
当谈到数据类型匹配时,我遇到了一个重大陷阱。
有一个字段显然是日期类型,但我添加了秒并在“2 02 4 -01 -01 00:00:00”和“2 02 4 -01 -3 1 00:00:00”之间写入,但发生了错误。
确实可以持续很长时间。

不过话说回来,使用 BETWEEN 实际上不那么麻烦。
我有一位同事在编写复杂查询时总是犯错误。
后来我教他如何使用BETWEEN,从那以后他的工作进步了3 0%。
因此,尽管这很简单,但它确实很有用。