mysql及联合查询
SQL语句分类
- DDL 数据库定义语言 定义数据库对象 create alter truncate drop
- TPL 事务处理语言 rollback commit
- DCL 数据控制语言 由 GRANT 和 REVOKE 两个指令组成 授权和废除权限
- DML 数据操作语言 CRUD操作
DML
select语句
inner join 公共的部分
SELECT * FROM `user` u INNER JOIN user_role r ON u.userid=r.userid;
left join 左表中全取,右边表如果没数据,字段为null,如果有多条呢,就会多条显示
SELECT * FROM `user` u LEFT JOIN user_role r on r.userid=u.userid;
right join 基本和left join相似,以右表为基础,右边表全取、、、
full join 全连接
mysql中不支持 full join
mysql中使用 左右连接 加一个 union all来实现全连接
SELECT
a.`user_name`,
a.`over`,
b.`over`
FROM
user1 a
LEFT JOIN user2 b ON a.`user_name` = b.`user_name`
UNION ALL
SELECT
b.`user_name`,
b.`over`,
a.`over`
FROM
user1 a
RIGHT JOIN user2 b ON a.`user_name` = b.`user_name`
cross join 交叉连接 笛卡尔连接
SELECT * FROM `user` CROSS JOIN user_role #没有连接条件
update 语句
mysql不支持 update 过滤条件中包含自身表,如下不支持
UPDATE `user`
SET `name` = 'xxx'
WHERE
userid = (
SELECT
userid
FROM
`user`
WHERE
userid=3
)
update语句和join语句一起用可以解决上面这个问题
update user1 a inner join user2 b on a.user_name = b.user_name set a.over='齐天大圣';
子查询
工作中尽量少用子查询,因为查询会每次都会与子查询中的数据做匹配导致效率下降。
SELECT
a.user_name,a.`over`,
(
SELECT
over
FROM
user2 b
WHERE
a.user_name = b.user_name) AS over2
FROM
user2 a
优化后如下
SELECT
a.user_name,a.`over`,
b.over AS over2
FROM
user1 a
LEFT JOIN user2 b ON a.user_name = b.user_name;
row_number()在mysql中不支持
mysql及联合查询的更多相关文章
- Mysql的联合查询
联合查询 union联合查询 语法: select 语句 union [all|distinct] select 语句; 示例: 特点: 条件:两表的查询出来的字段数目必须相同 ...
- mysql中联合查询
联合查询union 一个翻译问题的解释: 在mysql的手册中,将连接查询(Join)翻译为联合查询: 而联合查询(union),没有明确翻译. 但: 在通常的书籍或文章中,join被翻译为“连接”查 ...
- php+mysql数据库联合查询 left join 右侧数据重复问题
情况:多表联合查询(三表及以上联合查询) 分析: A left join B left join C left join D 假如: 表B.C.D都与表A关联查询 A left join B 4条数据 ...
- MySQL 中联合查询效率分析
目前我有两个表,一个keywords和一个news表.keyword存放关键词是从news中提取,通newsid进行关联,两表关系如图: keywords中存有20万条数据,news中有2万条数据,现 ...
- mysql三表联合查询,结果集合并
参考: mysql 结果集去重复值并合并成一行 SQL 三表联查 数据库三表连接查询怎么做 合并: MySQL中group_concat函数 完整的语法如下: group_concat([DISTIN ...
- mysql:联合查询
SELECT t1.name, t2.salary FROM employee AS t1 INNER JOIN info AS t2 ON t1.name = t2.name; 可以对数据表使用别 ...
- MYSQL的联合查询最好是少用,效能差异巨大
同样的功能,不同的写法,时间和内存占用差了几千倍,不废话,直接上代码 第一种写法: 代码如下: $Rs=DB::get($_ENV['DB'],3,"SELECT * FROM _xiazh ...
- thinkphp 使用原生mysql语句 联合查询
<?php class DelAction extends Action { public function ml(){ // 实例化一个空模型,没有对应任何数据表 $Dao = M(); // ...
- mysql三表联合查询
-- SELECT d.userId, d.userPhoNum, a.orderId, a.productType, b.courseId, b.courseName, c.payJe -- FRO ...
随机推荐
- python字典的概念与基本操作
字典是非常常用的一种数据结构,它与json格式的数据非常相似,核心就是以键值对的形式存储数据,关于Python中的字典做如下四点说明: 1.构造字典对象需要用大括号表示 {},每个字典元素都是以键值对 ...
- 怎么下载chrome的扩展程序
很多时候我们是没办法访问谷歌扩展应用程序 chrome应用商店的,这时候我们最好能把对应扩展应用程序下载保存,以便提供给其他人员使用. 搜索得到知乎有很全的方法: 如何导出并打包第三方chrome扩展 ...
- 访问github太慢?我写了一个开源小工具一键变快
前言 GitHub应该是广大开发者最常去的站点,这里面有大量的优秀项目,是广大开发者寻找资源,交友学习的好地方.尤其是前段时间GitHub公布了一项代码存档计划--Arctic Code Vault, ...
- 从《三体》到“中美科技战”,3分钟理解“网络”D丝为什么要迎娶“算力”白富美
摘要:在多维的世界里,高维的文明对于低维文明具有碾压的优势,而网络也正在从二维走向三维!网络硬件的竞争主要是“芯片+算法”. 从三体到中美科技战,理解网络与算力深度融合助力高维度竞争 1:对抗封锁,需 ...
- java开发,入职半年,对未来迷茫,如何发展?
分享-更多精彩图片尽在大师助手 个人建议,在JAVA方面,先学好JAVA SE.不管如何,基础才是上层建筑的一切.推荐去看jdk源码,推荐1.6或者1.7版本.因为1.8版本的源码中会有很多lambd ...
- 硬盘网盘U盘全部可以丢掉了,这个设备可以让你享受随身带着几个T的感受
前言 有小伙伴问我,你怎么老写技术类文章,能不能写点别的. 其实我兴趣挺广泛的,早年还有机会做个游戏博主,可惜最近2年金盆洗手了.戒了手游,ns和ps4都在吃灰.能完整玩完的游戏屈指可数.但是对于折腾 ...
- css面试题汇总 (持续更新)
前言:这篇随笔是为了准备后面的面试而整理的,网上各种面试题太多了,但是我感觉很多太偏了,而且实际开发过程中并不会遇到,因此这里我整理一些比较常用的,或者是相对比较重要的知识点,每个知识点都会由浅入深, ...
- Android开发禁止首次进入activity弹出软键盘,限制屏幕只能竖屏或者横屏展示
作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 只需在在Manifest.xml中设定activity的属性为: android:windowSoft ...
- 盒子上下滚动到js 底部触发的事件
//html是用法举列子,js亲测有效(把这段js#scro加到你要滚动的盒子) <div id="scro"> <div>1</div> & ...
- 【学习中】Fitness Schedule
章节 内容 签到 第1周:步伐 √第1课(34分钟) 跑步1分钟 行走2分钟 共做8次 4月24日 √第2课(28分钟) 跑步1分钟 行走2分钟 共做6次 4月27日 √第3课(31分钟) 跑步1分钟 ...