数智应用帮
柔彩主题三 · 更轻盈的阅读体验

SQL查询多个条件怎么写?实用技巧一看就懂

发布时间:2025-12-10 22:06:11 阅读:384 次

在日常开发中,查数据是家常便饭。比如你是个电商后台的运营,想看看上个月在北京下单、订单金额超过500元、且使用了优惠券的用户有哪些,这时候就得用到 SQL 查询多个条件

用 WHERE 搭配 AND 和 OR

最基本的多条件查询靠的是 WHERE 子句配合逻辑操作符。AND 表示“同时满足”,OR 表示“满足其一”。比如要查年龄大于25且所在城市是上海的员工:

SELECT * FROM employees 
WHERE age > 25 AND city = '上海';

如果还想包含杭州的员工,可以加上 OR:

SELECT * FROM employees 
WHERE age > 25 AND (city = '上海' OR city = '杭州');

注意括号的使用,它能明确优先级,避免逻辑出错。

IN 和 BETWEEN 让条件更简洁

当你需要匹配多个固定值时,别一个一个写 OR。比如查北京、上海、广州、深圳四个城市的用户:

SELECT * FROM users 
WHERE city IN ('北京', '上海', '广州', '深圳');

同样,范围查询用 BETWEEN 更直观。比如查2024年6月的所有订单:

SELECT * FROM orders 
WHERE order_date BETWEEN '2024-06-01' AND '2024-06-30';

结合 LIKE 做模糊匹配

有时候条件不是精确的。比如想找邮箱以 "admin" 开头的用户,并且注册时间在一年前:

SELECT * FROM users 
WHERE email LIKE 'admin%' 
  AND register_time < DATE_SUB(NOW(), INTERVAL 1 YEAR);

NULL 值要特殊处理

判断某个字段是否为空,不能用等号,得用 IS NULL 或 IS NOT NULL。比如查还没有填写电话号码的客户:

SELECT * FROM customers 
WHERE phone IS NULL;

实际场景:筛选符合条件的订单

回到最开始的电商例子,假设表叫 orders,字段有 user_id、amount、city、used_coupon、order_time。你想查去年北京地区、金额大于500、用了优惠券的订单:

SELECT user_id, amount, order_time 
FROM orders 
WHERE city = '北京'
  AND amount > 500
  AND used_coupon = 1
  AND order_time BETWEEN '2023-01-01' AND '2023-12-31';

这样的查询能快速定位高价值用户,方便后续做精准营销。

注意索引对多条件的影响

写得多不代表跑得快。如果经常按 city 和 amount 查数据,建议在这两个字段上建联合索引。否则数据量一大,查询可能慢得让人抓狂。

SQL 多条件查询就像组合钥匙,每个条件都是一道锁,全对才能开门。掌握好 AND、OR、IN、BETWEEN 这些工具,再留意 NULL 和索引问题,查数据就能又准又快。