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 ...
随机推荐
- #企业项目实战 .Net Core + Vue/Angular 分库分表日志系统六 | 最终篇-通过AOP自动连接数据库-完成日志业务
教程预览 01 | 前言 02 | 简单的分库分表设计 03 | 控制反转搭配简单业务 04 | 强化设计方案 05 | 完善业务自动创建数据库 06 | 最终篇-通过AOP自动连接数据库-完成日志业 ...
- IDEA2019.3激活
1 下载: 1.1 下载安装文件 https://blog.csdn.net/Beuty_Chen/article/details/103804886 1.2 下载激活补丁 链接 ...
- 热门话题,2020年了,web前端还好找工作吗?
#大师助手-全网唯一免费上pin 如果你要是和前几年的前端市场相比,那我会告诉你“不好找” 其实好不好找工作,是跟自己的能力分不开的.但是就前端开发这个行业本身来说,它的就业前景还是相当不错的. 随着 ...
- 使用echarts 轻松搞定各种后台数据统计
之前接到老大一个需求,需要将公私生态系统构建一个日志系统,统计公有云.私有云还有其他工具平台(如禅道,jenkins)的用户登录信息,并使用图标的形式动态显示,之前刚入门的时候接触过echarts 这 ...
- php中无参函数的RCE
学习一下php中无符号的问题. 1.无参数 <?php if(';' === preg_replace('/[^\W]+\((?R)?\)/', '', $_GET['code'])) { ev ...
- npm 进阶命令知多少(一)
npm命令知多少(一) 前言 作为前端模块化扎展现形式的npm包,已经在前端开发中不可或缺,熟练掌握npm相关内容,也是前端开发者的一门必修课,那么除了npm publish这类常见内容之外,还有哪些 ...
- 04_Python中的35个关键字
查看Python中的关键字 import keyword print(keyword.kwlist) # 返回一个包含Python关键字的列表 """执行结果 ...
- javascript面试题(一)
1. var bar = null; console.log(typeof bar === 'object'); //logs true! 尽管 typeof bar === "object ...
- 实验 1:Mininet 源码安装和可视化拓扑工具
实验 1:Mininet 源码安装和可视化拓扑工具 一.实验目的 掌握 Mininet 的源码安装方法和 miniedit 可视化拓扑生成工具. 二.实验任务 使用源码安装 Mininet 的 2.3 ...
- Agumaster漂亮起来了