MySQL 查询条件、模糊查询、排序、及分组

MySQL 条件查询

可以使用 WHERE 关键字来指定查询条件。同样在编辑、删除操作时也可以使用 Where 来设置条件。

语法 :

where 条件 or/and 条件

示例

# 单条件
SELECT id as st_id, name FROM students WHERE id > 1 ;
# 多条件
SELECT id as st_id, name FROM students WHERE id > 1 and age >= 5;

MySQL LIKE 模糊查询

MySQL 使用 LIKE关键字配合 % 进行模糊查询 :

like 'a%b'表示以字母 a 开头,以字母 b 结尾的任意长度的字符串。
like '%b' 表示以任意字符开头,以字母 b 结尾的任意长度的字符串。
like '%ab%' 表示包含 ab 字母的字符串。

示例 :

SELECT id as st_id, name FROM students WHERE name LIKE '%小%' ;

MySQL 排序

MySQL 使用 order by 关键字实现数据排序,语法 :

order by 字段名称 asc / desc
# asc 升序
# desc 降序
# 多个排序使用 , 分割
order by id desc, age asc

示例 :

SELECT id as st_id, name FROM students ORDER BY `age` asc, `name` desc ;

MySQL 分组

MySQL 使用 group by 关键字实现数据排序,语法 :

SELECT * FROM students GROUP BY class_id;

注意

从 MySQL 5.7.5 开始,默认开启了 ONLY_FULL_GROUP_BY,使用 group by 会报错 :

...in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

解决办法

1、先使用SQL查询sql_mode

select @@global.sql_mode

2、重新设置sql_mode,删除ONLY_FULL_GROUP_BY

set @@global.sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'

3、退出重进

# 退出
quit
# 再次登录(命令行模式)
mysql -u root -p

4、再次执行 SQL 命令

GROUP_CONCAT()

GROUP BY 关键字可以和 GROUP_CONCAT() 函数一起使用。GROUP_CONCAT() 函数会把每个分组的字段值都显示出来。

SELECT id, GROUP_CONCAT(`name`) FROM students GROUP BY class_id;