两个表:
name表
id name 1 ru 2 ruge 3 ruye 4 rushen
score表
id score 1 120 2 130 4 150 5 110
1.内联
(1)不做限制
SELECT * FROM NAME AS NAME INNER JOIN score AS s ; 结果: id name id score ------ ------ ------ -------- 1 ru 1 120 2 ruge 1 120 3 ruye 1 120 4 rushen 1 120 1 ru 2 130 2 ruge 2 130 3 ruye 2 130 4 rushen 2 130 1 ru 4 150 2 ruge 4 150 3 ruye 4 150 4 rushen 4 150 1 ru 5 110 2 ruge 5 110 3 ruye 5 110 4 rushen 5 110
(2)id相等时
SELECT * FROM NAME AS n INNER JOIN score AS s ON n.`id`=s.`id`; 结果: id name id score 1 ru 1 120 2 ruge 2 130 4 ruye 4 150
2、左外连接(left join 或者left outer join)
SELECT * FROM NAME AS n LEFT JOIN score AS s ON n.`id`=s.`id`; 结果: id name id score ------ ------ ------ -------- 1 ru 1 120 2 ruge 2 130 4 rushen 4 150 3 ruye (NULL) (NULL)
3、右外连接(right join或者right outer join)
SELECT * FROM NAME AS n RIGHT JOIN score AS s ON n.`id`=s.`id`; 结果: id name id score 1 ru 1 120 2 ruge 2 130 4 ruye 4 150 \N \N 5 110
注:外联必须有查询条件
二、3表关联查询
没有限制条件时:
SELECT * FROM `stuname` nm INNER JOIN `stuaddress` address INNER JOIN `stuscore` score;
id name id address id score 1 ru 1 hebei 1 120 1 ru 2 beijing 1 120 2 ruge 1 hebei 1 120 2 ruge 2 beijing 1 120 3 ruye 1 hebei 1 120 3 ruye 2 beijing 1 120 4 rushen 1 hebei 1 120 4 rushen 2 beijing 1 120 1 ru 1 hebei 2 130 1 ru 2 beijing 2 130 2 ruge 1 hebei 2 130 2 ruge 2 beijing 2 130 3 ruye 1 hebei 2 130 3 ruye 2 beijing 2 130 4 rushen 1 hebei 2 130 4 rushen 2 beijing 2 130 1 ru 1 hebei 4 150 1 ru 2 beijing 4 150 2 ruge 1 hebei 4 150 2 ruge 2 beijing 4 150 3 ruye 1 hebei 4 150 3 ruye 2 beijing 4 150 4 rushen 1 hebei 4 150 4 rushen 2 beijing 4 150 1 ru 1 hebei 5 160 1 ru 2 beijing 5 160 2 ruge 1 hebei 5 160 2 ruge 2 beijing 5 160 3 ruye 1 hebei 5 160 3 ruye 2 beijing 5 160 4 rushen 1 hebei 5 160 4 rushen 2 beijing 5 160
有限制条件时:
SELECT * FROM `stuname` nm INNER JOIN `stuaddress` address ON nm.`id`=address.`id` INNER JOIN `stuscore` score ON nm.`id`=score.`id`;
id name id address id score 1 ru 1 hebei 1 120 2 ruge 2 beijing 2 130
三,另一个实例
SELECT permission_id,permission_name,permission_url,parent_id FROM tbpermissions WHERE permission_id>999999 AND permission_id<10000000 AND permission_id IN( SELECT permission_id FROM tbrole_permissions WHERE role_id=( SELECT role_id FROM tbuserinfo WHERE user_id='0')); 等价于下面的sql: SELECT tm.* FROM tbpermissions tm INNER JOIN (SELECT tpm.permission_id FROM tbrole_permissions tpm INNER JOIN tbuserinfo tu ON tpm.`role_id`=tu.`role_id` AND tu.`user_id`='0') tp ON tm.permission_id>999999 AND tm.permission_id<10000000 AND tm.permission_id IN(tp.`permission_id`);
相关推荐
mysql关联,左关联,右关联,内连接,外连接,交叉连接
单击此处添加标题 * * * * * * * * * * * * 目录页 MYSQL联合查询上 联合查询注入原理-SQL的union查询 SQL中UNION 操作符用于合并两个或多个 SELECT 语句的结果集。UNION 内部的 SELECT 语句必须拥有相同数量的列。...
MySql,多表联合查询加AS语句,多余的就不说了,自己看,绝对简单!
单击此处添加标题 * * * * * * * * * * 目录页 MYSQL联合查询下 联合查询注入原理-判断数据输出位置 SELECT 语句的特殊用法: 当SELECT关键字后跟随的字段名为数字时,结果集也将是对应的数字,如: 联合查询注入...
MySQL 联合查询案例,需要搭配博主【MySQL】联合查询这篇文章使用,用于初始化数据,搭配文章学习可以充分学会联合查询,建议先学习博主 MySQL 专栏前部分的基础知识,联合查询是在有一定基础后进行学习的,里面的...
实例讲解MYSQL联合查询,帮助你更好的掌握MYSQL联合查询。
用于oracle,mysql,sqlserver,数据库分页联合查询
本文实例讲述了MySQL 多表关联一对多查询实现取最新一条数据的方法。分享给大家供大家参考,具体如下: MySQL 多表关联一对多查询取最新的一条数据 遇到的问题 多表关联一对多查询取最新的一条数据,数据出现重复 ...
因此,常常出现这样的错误 代码如下:select * from [IND] where INDID>10unionselect * from [IND] where INDID<9>10 order by INDID descunionselect * from [IND] where INDID<9 order by INDID desc此时就出现...
mysql多表查询和EXISTS查询性能对比
本文详细介绍了Mysql的联合查询命令UNION和UNION ALL,总结了使用语法和注意事项,以及学习例子和项目例子,需要的朋友可以参考下
mysql中有种可以通过join相关操作进行表与表之间的方式查询不同结果集,但是在一对多的情况下,关键查询的结果是多条的.例如:班级和学习的关系,我想很直观的看到班级和学生的情况,列表显示出班级的信息和班级的男生...
主要介绍了MySQL联合索引用法,结合实例形式分析了MySQL联合索引的具体定义与使用方法,需要的朋友可以参考下
mysql多表联合查询 表连接的约束条件 MySQL如何优化LEFT JOIN和RIGHT JOIN
本文实例讲述了mysql连接查询、联合查询、子查询原理与用法。分享给大家供大家参考,具体如下: 本文内容: 连接查询 联合查询 子查询 from子查询 where子查询 exists子查询 首发日期:2018-04-11 连接查询...
mysql多表联合查询.pdf
多表联合查询,一个简单的实例。适合初学者参考!
MySQL三种关联查询的方式_ ON vs USING vs 传统风格
mysql多表查询,联合查询
MySQL 表子查询 表子查询是指子查询返回的结果集是 N 行 N 列的一个表数据。 MySQL 表子查询实例 下面是用于例子的两张原始数据表: article 表: blog 表: SQL 如下: SELECT * FROM article WHERE (title,...