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 ... 
随机推荐
- 这可能是最详细的解析HTTP走私攻击的文章
			前言 HTTP Desync Attacks也就是HTTP走私攻击,是我见到的比较有趣的一种攻击方式,这里来对这种漏洞进行介绍. TL;DR HTTP走私攻击利用了HTTP协议本身的问题:HTTP中存 ... 
- Android开发之下载服务器上的一张图片到本地java代码实现HttpURLConnection
			package com.david.HttpURLConnectionDemo; import java.io.FileOutputStream; import java.io.IOException ... 
- 面向嵌入式的JavaScript引擎
			https://jerryscript.net/ https://duktape.org/ https://github.com/ialex32x/duktape-unity https://gith ... 
- java中equals与hashCode的重写问题
			这几天有一个朋友问我在重写equals和hashCode上出现了问题,最后我帮她解决了问题,同时也整理出来分享给大家 现上Object的equals与HashCode的代码 public boolea ... 
- 软件架构与设计 百度网盘的pdf电子书籍
			如有版权问题请及时联系小编 软件架构与设计 百度网盘的pdf电子书籍 1:<软件体系结构(PDF)>https://pan.baidu.com/s/1lChfIJt5lc63KO09n5L ... 
- Mybatis联合查询(一)
			Mybatis的简单联合查询操作: 实体类: Employee: package com.test.mybatis; public class Employee { private Integer i ... 
- Mybatis实例增删改查(二)
			创建实体类: package com.test.mybatis.bean; public class Employee { private Integer id; private String las ... 
- 图像通道、RGB与色彩体系
			通道(Channels) 图像的通道指的是什么?是不是灰度图的通道数为1,彩色图的通道为3 ? 图像通道,在RGB色彩模式下就是指那单独的红色.绿色.蓝色部分.也就是说,一幅完整的图像,是由红色绿色蓝 ... 
- MySQL中如何分析查询语句
			Oracle中有explain for,mysql中也有同样的功能,那便是explain,举例如下: mysql> explain select (case (select count(*) f ... 
- Zookeeper高级
			1.1. 一致性协议概述 前面已经讨论过,在分布式环境下,有很多不确定性因素,故障随时都回发生,也讲了CAP理论,BASE理论 我们希望达到,在分布式环境下能搭建一个高可用的,且数据高一致性的服务,目 ... 
