全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-15 6 分钟 ✍️ juanwangdev

MySQL WHERE 条件过滤

WHERE 子句用于指定查询条件,只返回满足条件的记录。

基本语法

SQL
SELECT 列名 FROM 表名 WHERE 条件;

比较运算符

SQL
-- 创建示例表
CREATE TABLE products (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    price DECIMAL(10, 2),
    stock INT
);

INSERT INTO products VALUES
(1, '手机', 2999, 100),
(2, '电脑', 5999, 50),
(3, '耳机', 299, 200),
(4, '平板', 1999, 0);

-- 等于
SELECT * FROM products WHERE price = 2999;

-- 不等于
SELECT * FROM products WHERE price != 2999;
SELECT * FROM products WHERE price <> 2999;

-- 大于、小于
SELECT * FROM products WHERE price > 2000;
SELECT * FROM products WHERE stock < 50;

-- 范围比较
SELECT * FROM products WHERE price >= 1000 AND price <= 5000;

逻辑运算符

SQL
-- AND 与
SELECT * FROM products WHERE price > 1000 AND stock > 0;

-- OR 或
SELECT * FROM products WHERE price < 500 OR stock = 0;

-- NOT 非
SELECT * FROM products WHERE NOT stock = 0;

特殊运算符

SQL
-- BETWEEN...AND 范围
SELECT * FROM products WHERE price BETWEEN 500 AND 3000;

-- IN 列表
SELECT * FROM products WHERE id IN (1, 3, 5);

-- LIKE 模糊匹配
SELECT * FROM products WHERE name LIKE '手%';  -- 以"手"开头
SELECT * FROM products WHERE name LIKE '%机';  -- 以"机"结尾
SELECT * FROM products WHERE name LIKE '%耳%'; -- 包含"耳"

-- IS NULL 判断空值
SELECT * FROM products WHERE stock IS NULL;
SELECT * FROM products WHERE stock IS NOT NULL;

运算符优先级

优先级运算符
NOT
AND
OR
SQL
-- 使用括号明确优先级
SELECT * FROM products
WHERE (price < 500 OR stock > 100) AND name LIKE '%机';

WHERE 在 GROUP BY 之前执行,用于过滤原始数据。

要点总结

  • WHERE 用于过滤行数据
  • 支持比较、逻辑、范围、模糊匹配等运算符
  • AND 优先级高于 OR,建议用括号明确逻辑
  • NULL 值判断用 IS NULL 或 IS NOT NULL

📝 发现内容有误?点击此处直接编辑

← 上一篇 MySQL SELECT 查询
下一篇 → MySQL 多表连接查询
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库