MySQL SELECT 查询
- 发布
- 分类
- MySQL
- 篇幅
- 338 字 / 1 分钟
- 阅读
- 422
WHERE 条件过滤

比较运算符
| 含义 | 运算符 |
|---|---|
| 等于 | = |
| 不等于 | <>或 != |
| 小于 | < |
| 小于等于(不大于) | <= 或 !> |
| 大于 | > |
| 大于等于(不小于) | >= 或 !< |
| 不小于 | !< |
| 在指定的两个数值之间 | BETWEEN |
| 为空值 | IS NULL |
逻辑运算符
| 含义 | 运算符 |
|---|---|
| 并且 | AND |
| 或者 | OR |
| 在指定范围内 | IN |
| 非(否定) | NOT |
通配符
| 含义 | 运算符 |
|---|---|
| 匹配任意字符串出现任意次数 | % |
| 匹配单个字符 | - |
eg1:
SELECT name FROM heros WHERE name LIKE '%太%'; -- (%)代表零个或多个字符
SELECT name FROM heros WHERE name LIKE '_%太%'; -- (_)只代表一个字符。
查询
SELECT '王者荣耀' as platform, `name` as n, hp_max, mp_max, attack_max, defense_max FROM heros ORDER BY hp_max DESC LIMIT 5;
SELECT DISTINCT role_assist FROM heros;
SELECT的顺序
书写顺序:
SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY ...
执行顺序(在MySQL和Oracle中,SELECT执行顺序基本相同):
1、FROM子句组装数据(包括通过ON进行连接)
2、WHERE子句进行条件筛选
3、GROUP BY分组
4、使用聚集函数进行计算;
5、HAVING筛选分组;
6、计算所有的表达式;
7、SELECT 的字段;
8、ORDER BY排序
9、LIMIT筛选
FROM > WHERE > GROUP BY > HAVING > SELECT的字段 > DISTINCT > ORDER BY > LIMIT
SELECT DISTINCT player_id, player_name, count(*) as num # 5
FROM player JOIN team ON player.team_id = team.team_id # 1
WHERE height > 1.80 # 2
GROUP BY player.team_id # 3
HAVING num > 2 # 4
ORDER BY num DESC # 6
LIMIT 2 # 7
eg1:
SELECT DISTINCT role_assist FROM heros;
eg2:
SELECT '王者荣耀' as platform, `name` as n, role_main, role_assist, hp_max, mp_max, birthdate
FROM heros
WHERE (role_main IN ('法师', '射手') OR role_assist IN ('法师', '射手'))
AND DATE(birthdate) NOT BETWEEN '2016-01-01' AND '2017-01-01' -- 将字段birthdate转化为日期类型再进行比较
ORDER BY (hp_max + mp_max) DESC LIMIT 5;