mysql--表查询

条件查询:

-- 查询name = '测试' 或 email="test.com" 和id=1
select * from db where (name = '测试' or email="test.com")  and id=1;
-- 查找id在(1,2,3)
select * from db where id in (1,2,3);
-- 查找id在user表中的数据
select * from db where id in (select id from user);
-- 查找uer表id=5的语句是否存在,不存在则不查询db表
select * from db where exists (select * from user where id=5);
-- 查找uer表id=5的语句是否不存在,不存在则查询db表
select * from db where not exists (select * from user where id=5);
-- 查找db表中id大于2的数据且age大于5的数据
select * from (select * from db where id>2) as T where as.age > 5;

通配符:

-- %匹配多个,_匹配一个;
select * from message where mail like "%com";
select * from message where mail like "_123124@qq.com";
select * from message where mail like "_123124@%";

排序:

-- 根据age倒序排序
select * from message order by age desc ;
-- 根据age从小到大排序
select * from message order by age;
select * from message order by age asc;
-- 先根据age从小到大排序,age相等时根据id从大到小排序
select * from message order by age asc,id desc;

取部分数据

-- 取前五行数据
select * from message limit 5;
-- 先排序,在取前5行
select * from message order by id desc limit 5;
-- 从第一个位置后,取5行数据
select * from message limit 5 offset 1;

分组:

-- 根据age分组
-- max(id)分组后保留最大的id数据
-- min(id)分组后保留最小的id数据
-- count(1)统计合并的数量
-- sum(id) 统计合并的id总和
-- avg(id) 统计合并的id平均值
select age,max(id),min(id),count(1),sum(id),avg(id) from message group by age;
-- 对分组后的数据在添加条件,使用having
select age,count(1) from message group by age having count(1) > 2;

连表查询:

-- 连表查询
select * from message inner join user on message.id=user.id;
-- 查询展示信息:message: id,age,phone; user: phone
-- left outer join,左表为主表,添加条件:on
select message.id,message.name,message.age,user.phone from message left join user on message.name=user.name;
posted @   咖啡馆  阅读(48)  评论(0编辑  收藏  举报
编辑推荐:
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示