多表查询(总结)
2016-01-08 00:18
232 查看
左联结
select a.*,b.name as department_name from
(select * from hr_position where id = {$id})
as a left join hr_department as b on a.department_id = b.id
/**
* 内联结
* 1:自连接
* select 字段1,字段2 from 表1,表2 where 表1.字段 = 表2.字段(AS是可以省略)
*/
$sql = "select A.cat_name,B.art_title from bg_category AS A,bg_article AS B where A.cat_id = B.cat_id";
//内联结
// select 字段1,字段2 from 表1 inner join 表2 on 表1.字段 = 表2.字段
$sql1 = "select A.cat_name,B.art_title from bg_category A INNER JOIN bg_article B ON A.cat_id = B.cat_id";
/**
* 左联结
* select 字段1,字段2 from 表1 left join 表2 on 表1.字段 = 表2.字段
* 遍历所有的左边表,右表没有的是NULL
*/
$sql2 = "select A.cat_name,B.art_title from bg_category A left join bg_article B on A.cat_id = B.cat_id";
/**
* 右联结
* select 字段1,字段2 from 表1 right join 表2 on 表1.字段 = 表2.字段
* 遍历所有右边表,左边没有的是NULL
*/
$sql3 = "select A.cat_name,B.art_title from bg_category A right join bg_article B on A.cat_id = B.cat_id";
/**
* 全联结
* select 字段1,字段2 from 表1 join 表2 on 表1.字段 = 表2.字段
*/
$sql4 = "select A.cat_name,B.art_title from bg_category A join bg_article B on A.cat_id = B.cat_id";
/**
* 联合查询
* union
*/
$sql5 = "select cat_id,cat_name from bg_category UNION select art_id,art_title from bg_article";
/**
* 嵌套查询
*/
$sql6 = "select cat_id,cat_name from bg_category where cat_id IN (select cat_id from bg_article where cat_id = 1)";
/**
* 组合查询
* group by
*/
$sql7 = "select cat_id as v,cat_name from bg_category GROUP BY v desc";
例子:
-------------------------------------------------
a表 id name b表 id job parent_id
1 张3 1 23 1
2 李四 2 34 2
3 王武 3 34 4
a.id同parent_id 存在关系
--------------------------------------------------
1) 内连接
select a.*,b.* from a inner join b on a.id=b.parent_id
结果是
1 张3 1 23 1
2 李四 2 34 2
2)左连接
select a.*,b.* from a left join b on a.id=b.parent_id
结果是
1 张3 1 23 1
2 李四 2 34 2
3 王武 null
3) 右连接
select a.*,b.* from a right join b on a.id=b.parent_id
结果是
1 张3 1 23 1
2 李四 2 34 2
null 3 34 4
4) 完全连接
select a.*,b.* from a full join b on a.id=b.parent_id
结果是
1 张3 1 23 1
2 李四 2 34 2
null 3 34 4
3 王武 null
select a.*,b.name as department_name from
(select * from hr_position where id = {$id})
as a left join hr_department as b on a.department_id = b.id
/**
* 内联结
* 1:自连接
* select 字段1,字段2 from 表1,表2 where 表1.字段 = 表2.字段(AS是可以省略)
*/
$sql = "select A.cat_name,B.art_title from bg_category AS A,bg_article AS B where A.cat_id = B.cat_id";
//内联结
// select 字段1,字段2 from 表1 inner join 表2 on 表1.字段 = 表2.字段
$sql1 = "select A.cat_name,B.art_title from bg_category A INNER JOIN bg_article B ON A.cat_id = B.cat_id";
/**
* 左联结
* select 字段1,字段2 from 表1 left join 表2 on 表1.字段 = 表2.字段
* 遍历所有的左边表,右表没有的是NULL
*/
$sql2 = "select A.cat_name,B.art_title from bg_category A left join bg_article B on A.cat_id = B.cat_id";
/**
* 右联结
* select 字段1,字段2 from 表1 right join 表2 on 表1.字段 = 表2.字段
* 遍历所有右边表,左边没有的是NULL
*/
$sql3 = "select A.cat_name,B.art_title from bg_category A right join bg_article B on A.cat_id = B.cat_id";
/**
* 全联结
* select 字段1,字段2 from 表1 join 表2 on 表1.字段 = 表2.字段
*/
$sql4 = "select A.cat_name,B.art_title from bg_category A join bg_article B on A.cat_id = B.cat_id";
/**
* 联合查询
* union
*/
$sql5 = "select cat_id,cat_name from bg_category UNION select art_id,art_title from bg_article";
/**
* 嵌套查询
*/
$sql6 = "select cat_id,cat_name from bg_category where cat_id IN (select cat_id from bg_article where cat_id = 1)";
/**
* 组合查询
* group by
*/
$sql7 = "select cat_id as v,cat_name from bg_category GROUP BY v desc";
例子:
-------------------------------------------------
a表 id name b表 id job parent_id
1 张3 1 23 1
2 李四 2 34 2
3 王武 3 34 4
a.id同parent_id 存在关系
--------------------------------------------------
1) 内连接
select a.*,b.* from a inner join b on a.id=b.parent_id
结果是
1 张3 1 23 1
2 李四 2 34 2
2)左连接
select a.*,b.* from a left join b on a.id=b.parent_id
结果是
1 张3 1 23 1
2 李四 2 34 2
3 王武 null
3) 右连接
select a.*,b.* from a right join b on a.id=b.parent_id
结果是
1 张3 1 23 1
2 李四 2 34 2
null 3 34 4
4) 完全连接
select a.*,b.* from a full join b on a.id=b.parent_id
结果是
1 张3 1 23 1
2 李四 2 34 2
null 3 34 4
3 王武 null
相关文章推荐
- Linux开发五_构建根文件系统
- socket编程的同步、异步与阻塞、非阻塞示例详解之一
- 支付系统返回值,错误码,code
- NSNumber讲解之二——NSNumber的大小比较
- 模板模式 c#
- linux网络编程之socket(十一):套接字I/O超时设置方法和用select实现超时
- Project or Program Success: What Matters
- NSNumber讲解之一——NSNumber封装数值型数据
- Git常用命令
- [OJ] Matrix Zigzag Traversal
- jquery-validate常用扩展验证
- linux socket套接字超时之setsockopt
- 一条命令搞定在VMware中的Ubuntu14.04 64 位安装Docker
- SQLServer 动态sql创建指定数据库下的视图
- 秒杀系统架构分析与实战
- [时空与预测]星际迷航-暗黑无边
- LNMP架构下访问php页面出现500错误
- struts2对action指定方法进行校验(人工编码)
- Linux开发四_bootloader启动linux内核
- 用setsockopt()来控制recv()与send()的超时