# MySQL中AND怎么使用 ## 一、AND运算符基础概念 AND是MySQL中最常用的逻辑运算符之一,用于连接多个条件表达式,要求所有条件同时满足时才返回TRUE(1)。作为二元运算符,AND在WHERE、HAVING、ON等子句中发挥关键作用。 ### 基本语法结构 ```sql SELECT column1, column2 FROM table_name WHERE condition1 AND condition2 [AND condition3...];
条件A | 条件B | A AND B |
---|---|---|
TRUE | TRUE | TRUE |
TRUE | FALSE | FALSE |
FALSE | TRUE | FALSE |
FALSE | FALSE | FALSE |
NULL | TRUE | NULL |
NULL | FALSE | FALSE |
NULL | NULL | NULL |
-- 查询年龄大于25且来自北京的员工 SELECT * FROM employees WHERE age > 25 AND city = '北京';
-- 查询2023年销售额超过100万且退货率低于5%的店铺 SELECT store_id FROM sales_data WHERE sale_amount > 1000000 AND return_rate < 0.05 AND year = 2023;
-- 内连接查询订单及对应客户信息(需同时满足两个条件) SELECT o.order_id, c.customer_name FROM orders o JOIN customers c ON o.customer_id = c.id AND o.status = 'completed';
当AND和OR混合使用时,需要用括号明确优先级:
-- 正确写法:查询北京或上海且年龄大于30的员工 SELECT * FROM employees WHERE (city = '北京' OR city = '上海') AND age > 30;
-- 更新特定条件的记录 UPDATE products SET price = price * 0.9 WHERE category = '电子产品' AND stock > 100;
-- 查询平均分超过85且没有挂科记录的学生 SELECT student_id FROM exam_scores GROUP BY student_id HAVING AVG(score) >= 85 AND MIN(score) >= 60;
条件顺序原则:将选择性高的条件放在前面
-- 更优写法(假设status=1的记录更少) WHERE status = 1 AND create_time > '2023-01-01'
索引利用:为AND连接的常用条件列创建复合索引
-- 建议为(city, age)创建联合索引 CREATE INDEX idx_city_age ON employees(city, age);
避免全表扫描:对于大表查询,确保至少有一个AND条件能有效过滤数据
错误示例:
-- 错误:会先计算age>30 AND gender='男',再OR SELECT * FROM users WHERE status=1 OR age>30 AND gender='男';
修正方案:
SELECT * FROM users WHERE status=1 OR (age>30 AND gender='男');
-- 当可能有NULL值时,建议使用: WHERE column1 = value AND (column2 IS NOT NULL AND column2 > 100)
-- 不推荐的写法(无法使用索引) WHERE YEAR(create_time) = 2023 AND status = 1 -- 推荐写法 WHERE create_time BETWEEN '2023-01-01' AND '2023-12-31' AND status = 1
-- 查询2023年Q4季度,手机品类中 -- 价格在2000-5000元且好评率>95%的商品 SELECT product_id, product_name FROM products WHERE category = '手机' AND price BETWEEN 2000 AND 5000 AND rating > 0.95 AND quarter = 'Q4' AND year = 2023;
AND运算符作为MySQL查询构建的基础组件,合理使用可以精确控制数据筛选范围。掌握其使用技巧不仅能提高查询准确性,还能显著优化查询性能。建议开发者在复杂查询中配合EXPLN命令分析执行计划,确保AND条件被高效执行。 “`
(全文约1050字,涵盖基础用法、高级技巧、性能优化等完整内容)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。