nysql基础知识——AND&OR

上周 MySQL 内部。
AND 和 OR 是逻辑运算符。

AND表示条件同时满足。
例如。
2 02 3 年 1 月。
查找城市广州。
还有一位顾客,名叫王武。

OR 仅满足条件之一。
例如。
2 02 3 年 1 月。
查找城市广州。
或者是一位名叫王五的顾客。

注意优先事项。
AND 具有高优先级。
使用括号进行组合。
例如。
2 02 3 年1 月,查看名字是张三还是王五。
以及广州市内的客户。

添加正确的括号。
没关系。

MySQL 关键字执行顺序:IN 和 UNION 在哪里?

IN 关键字用在 WHERE 子句中。
2 02 2 年,我在一家公司写SQL的时候,总是搞不清楚什么时候能完成。
根据文档,这是一个条件WHERE子句运算符,因此必须在WHERE步骤中执行。
例如,如果我编写 SELECT FROM users WHERE id IN (1 , 2 , 3 ),则 IN 将相当于 WHERE id = 1 OR id = 2 OR id = 3 ,对吧?语法要简单得多。
后来我才知道这个IN像BETWEEN、=、LIKE等都是用来过滤WHERE阶段的数据的。
数据库优化器也可以专门为此进行优化。
我尝试了一下,确实更快了。

有一个 UNION 关键字让我更加困惑。
它与正常执行顺序的独立程度如何?我查了2 02 2 年的数据库论坛,有人解释说这是因为它的功能是组合多组查询结果而不是在单个查询中进行操作。
例如,如果我写 SELECT FROM table1 UNION SELECT FROM table2 ,这两个查询必须首先按照标准顺序执行,即 FROM→ON→JOIN→WHERE→GROUP BY→HAVING→SELECT→DISTINCT→ORDER BY→LIMIT,然后将结果集进行 Join。
合并时应自动删除重复项。
如果不使用UNION ALL,则不会进行重复数据删除。
我只是想,这和 JOIN 太不一样了。
JOIN 水平连接表数据,而 UNION 垂直连接结果集。
列数和数据类型必须兼容。

为什么标准执行顺序中不显示UNION?后来我意识到 IN 是一个条件运算符,是 WHERE 子句的一部分。
执行是隐含在WHERE阶段的,所以不需要单独列出。
至于UNION,它是组合查询的操作。
操作的对象是完整的请求。
每个请求都有自己的执行顺序。
UNION是最后的合并,因此不依赖于单个查询过程。

我举了一个例子: SELECT id FROM users WHERE id IN (1 , 2 , 3 ) UNION SELECT user_id FROMorders WHERE amount > 1 00;对于这个查询,首先执行第一个查询:FROMusers→WHERE id IN (1 ,2 ,3 )→显示id列的结果集。
再次执行第二个查询:FROM order → WHERE sum > 1 00 → 返回 user_id 列的结果集。
UNION 然后合并两个结果集,删除重复项,最后返回合并后的数据。

简单来说,IN是WHERE子句的一部分,在WHERE子句中执行。
UNION 是组合查询的操作。
首先执行子查询,然后组合结果。
在分析执行复杂查询背后的逻辑时,了解这两个元素的位置对我有很大帮助。
好吧,不再说了。

MySQL中OR的作用及用法详解mysql中or什么作用

嘿,不告诉你 OR,这真的没那么难。
我在武汉的时候,公司里的朋友没有见到他,然后信息查了好几次都不对。

第二天,我们有一个表叫orders,是根据客户的订单准备的。
有时对于过去一个月下过订单的所有客户,或者订单总金额超过1 000元的客户来说都是必要的。
这次你使用 OR。
与现在的年轻人不同,只需使用 SELECT FROM ORDER WHERE order_date > DATE_SUB(NOW(), INTERPRETATION 1 个月) OR 数量 > 1 000 即可;一切都完成了。

另一个例子是数据发生变化时。
该请求是将所有状态为“待处理”或状态小于 5 00 的订单的状态更改为“已关闭”。
只需输入 UPDATE rows SET status = 'close' WHERE status = 'pending' OR amount < D>当我写这篇文章时,我首先设置 status = 'pending',认为这样会更高效。
注入尊重,我发现没什么有趣的。
MySQL 优化得非常好。

最大的跌倒是什么?它们与 OR 和 NOT 一起使用。
请记住,我已经检查了所有状态不是已关闭而是待处理的订单。
您可以编写 SELECT FROM ORDER WHERE status != 'close' AND status = 'pending';但这是错误的,他没有添加NOT^。
应写为 SELECT FROM ORDER WHERE (status != 'close' OR status != 'pending');这是真实的。
自从我写这篇文章以来,我改了三次代码。
最后,小女孩告诉我,说:“都是你的错,整个学费都空了。
”我的脸红了。

哦,好吧,一个。
使用 OR 时,请包含 IF 条件。
例如,检查姓名中包含“张”或“王”的所有客户。
写入 SELECT FROM customer WHERE '%张%' OR name 'I LIKE '%王%';这是真实的。
是内部人写的 SELECT FROMtaxonios WHERE '%张%' OR name = '%王%';你猜怎么着?结果发现是错误的,所有“王”的名字都是相等的。
您必须在第二个 WANT 中添加 %,否则它将是完全匹配。

总之,OR用得好可以省很多麻烦,用错了就会害死人。
我建议您运行该脚本几次,看看它是否正确发生。
别像我一样,一做好就急着提交,结果网上出现问题。
噢,多么深刻的教训啊。