MySQL中可用于数据过滤的函数有哪些?使用ORDER BY无效
MySQL数据过滤的正确用法
你混淆了排序和过滤的作用:ORDER BY是用来对查询结果进行排序的,而不是过滤数据。要筛选符合条件的数据,需要用以下这些语句和操作符:
一、基础行过滤:WHERE 子句
这是最常用的数据过滤方式,在查询时直接筛选符合条件的行:
- 单条件示例:从
users表中筛选年龄大于18的用户SELECT * FROM users WHERE age > 18; - 多条件组合:用
AND/OR组合多个条件SELECT * FROM users WHERE age > 18 AND country = 'China';
二、聚合结果过滤:HAVING 子句
如果需要对GROUP BY聚合后的结果进行过滤,必须用HAVING(WHERE无法处理聚合函数的结果):
- 示例:统计每个国家的用户数量,只保留用户数超过100的国家
SELECT country, COUNT(*) AS user_count FROM users GROUP BY country HAVING user_count > 100;
三、常用过滤操作符与函数
- 模糊匹配:
LIKE,支持通配符%(任意字符)和_(单个字符)SELECT * FROM users WHERE name LIKE '李%'; -- 匹配所有姓李的用户 - 范围筛选:
BETWEEN...AND,匹配指定区间内的值SELECT * FROM users WHERE age BETWEEN 20 AND 30; - 集合匹配:
IN,匹配指定集合中的值SELECT * FROM users WHERE country IN ('China', 'USA', 'Germany'); - 空值判断:
IS NULL/IS NOT NULL,处理字段为空的情况SELECT * FROM users WHERE phone IS NULL; -- 筛选未填写手机号的用户
内容的提问来源于stack exchange,提问作者Hasan Genc
相关产品推荐
相关产品推荐

