# 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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。