mysql数据表中查询价格在0~100元之间的商品信息?

mysql中between语句如何使用

BETWEEN这个东西……相当方便。
就在 MySQL 中。
检查某事时使用它。
例如...我将在2 02 2 年在一个叫北京的城​​市进行查询。
我想检查某个表,比如产品。
里面有一个价格字段。
我想查价格在1 0元到5 0元之间的产品,对吗? 只需使用 BETWEEN 即可。

这就是它所说的:
sql 选择产品名称、价格 来自产品 价格在 1 0.00 到 5 0.00 之间;
你看到了吗? 1 0 点到 5 0 点之间。
这就是范围。
包含1 0元和5 0元。
它实际上相当于以下内容:
sql 选择产品名称、价格 来自产品 其中价格 >= 1 0.00 并且价格 <= 5 0.00;
效果一样。
BETWEEN 将两个句子合并为一个句子,看起来更简单。
当时我很困惑,以为它不包含边界值,但后来我意识到它包含。

这个东西最重要的是它不仅仅可以用来数字。
例如,要检查年龄,假设有一个名为 users 的表,其中包含年龄字段。
我想找到1 8 岁到3 0岁之间的用户。
只需写:
sql 选择用户名、年龄 来自用户 年龄在 1 8 岁至 3 0 岁之间;
数字类型、整数、浮点数等等。

另一个例子是检查日期。
假设有一个名为orders的表,其中包含订单日期字段order_date。
我想查看2 02 3 年1 月1 日到1 月3 1 日期间下的订单。
只需写:
sql 选择订单 ID、订单日期 来自订单 WHERE order_date 介于“2 02 3 -01 -01 ”和“2 02 3 -01 -3 1 ”之间;
按日期顺序比较。
不过要小心,这个地方很容易出事。
如果该字段是DATETIME类型并且您只给出一个日期,例如“2 02 3 -01 -3 1 ”,MySQL会将其视为“2 02 3 -01 -3 1 00:00:00”。
这样会错过当天0:00到2 3 :5 9 :5 9 的订单。
所以最好还是明确一下时间范围。
例如:
sql 选择订单 ID、订单日期 来自订单 WHERE order_date 介于“2 02 3 -01 -01 00:00:00”和“2 02 3 -01 -3 1 2 3 :5 9 :5 9 ”之间;
这样就不会漏了。

还有字符串类型。
例如,要检查用户名,我想查找名称以A到C开头的用户。
只需编写:
sql 选择用户名 来自用户 WHERE user_name 位于“A”和“C”之间;
但是这个东西,它是根据字符集校对进行字典序比较的。
所以结果可能包括所有以C开头但小于D的字符串,比如Cynthia什么的。
区分大小写取决于排序规则的设置方式。
这个地方你可能需要注意一下。

除了普通的BETWEEN之外,还有NOT BETWEEN。
只是排除一定范围。
比如我想查价格不在1 0元到5 0元之间的产品。
只需写入:
sql 选择产品名称、价格 来自产品 价格不在 1 0.00 和 5 0.00 之间;
这实际上相当于:
sql 选择产品名称、价格 来自产品 如果价格 < 1> 5 0.00;
使用 NOT BETWEEN 可以让查询更加直观,尤其是条件较多的情况下。
例如,使用 NOT BETWEEN 可以非常方便地检查销售额不在一定范围内的订单。

总的来说,BETWEEN还是不错的,让范围查询更加简洁。
但使用时一定要注意数据类型,特别是日期和时间一定要处理完整。
字符串比较取决于排序规则。
NOTBETWEEN 还可以有效地排除范围并避免编写复杂的 OR 条件。

mysql如何使用between查询区间

哦,我来说说我当年遇到的陷阱吧。
BETWEEN看似简单,其实很有深度!
我前年在北京办活动的时候查了一下报名表。
数据表非常大,有数千条记录。
我编写了 SQL 来检查 1 8 岁到 2 8 岁之间的申请人:
sql 从 1 8 岁至 2 8 岁之间的注册中进行选择。

结果如何?弄清楚这一点的人似乎出了问题。
其中3 0岁以上的人也不少。
一头雾水,我检查了代码,发现内部年龄和外部年龄都是以字符串的形式存储的,这让我很头疼!查看该字段,“2 8 ”、“2 9 ”和“3 0”都被视为大于或等于“2 8 ”。
BETWEEN 不关心这个,直接按字母顺序比较。
“3 ”在“2 ”之后,因此“3 0”大于“2 8 ”。
我当时就傻了,赶紧把字段类型改成Integer再试。
这是正确的做法。

因此,在使用BETWEEN时,首先要保证两边的值与你要检查的字段类型相匹配。
我永远不会忘记这一点,每年核对数据时都要小心。

还有一次是在上海。
检查特定时期的订单。
我写:
sql 从 order_date 介于“2 02 3 -01 -01 ”和“2 02 3 -01 -3 1 ”之间的订单中进行选择;
结果如何?我们没有找到很多“2 02 3 -01 -3 1 2 3 :5 9 :5 9 ”的订单。
为什么?由于BETWEEN涉及双方,所以时间到了2 3 :5 9 :5 9 就不算数了。
我应该怎么办?最后,我更改了 SQL 并添加了 >,使其看起来像这样:
sql 从订单中选择 order_date BETWEEN '2 02 3 -01 -01 ' AND DATE_ADD('2 02 3 -01 -3 1 ', INTERVAL 1 SECOND);
这样你就可以检查一切。
这个小陷阱每年都有新人踏入其中,而且特别烦人。

因此,使用BETWEEN时必须特别注意日期和时间边界值。
当谈到弦乐时,不要忘记对比度的影响。
前年我在深圳做过一个项目。
一开始有两个A,一个大写,一个小写。
结果,他们分成了BETWEEN。

索引也很重要。
去年在杭州做数据库优化的时候,朋友写了一个BETWEEN查询,结果很慢。
我查了一下,嗯?未添加任何索引。
他的表有几百万条数据,但是没有索引,所以BETWEEN要扫描全表。
后来加了索引,几秒就出结果了。
所以如果可以使用BETWEEN的话,先给字段加索引可以省去很多麻烦。

简单来说,BETWEEN 非常好用。
但不要盲目使用。
在过去的十年里,我在写小册子时遇到了很多麻烦。
如果您记得您的数据类型是正确的,您的边界是仔细的,并且您的索引是精确的,那么您基本上可以避免陷阱。