您的位置:首页 > 数据库 > MySQL

mysql 联结 子查询

2016-03-25 00:03 260 查看
在可以指定一个表名的任何地方,都可以一个括号括起来的join子句替换

1. 自然联结

inner join (默认联结)

left (outer) join 左表可以为NULL

right (outer) join 右表可以为NULL

full (outner) join 左表和右表都可以为NULL

2. cross join 笛卡尔积

返回两张表的所有字段, 不去重重复列名

条件用where 比如 select a.*, b.* from a cross join b where

等同于 select * from a, b where ...

子查询

1> from子句中的任何表名替换成一条完整的select语句.当然,必须分配一个相关名称。

例如select p.name, p.id from (select * from students) as p

2>where子句 可以把一个表查询作为一个in、some、any、all、exists谓词的比较值列表的来源。 (即嵌套查询,子查询的结果不输出给主查询)

例如:Select * from students where students.area in (select area.Name from areas)

All some any 之前皆可用 > 、 = 、<、<=、>=、<>来进行筛选

关于效率问题:
join>exist, 通常情况下用join不用子查询
对于小数据都可以, 大数据表绝对不允许join和子查询的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: