教程集 www.jiaochengji.com
教程集 >  数据库  >  mysql  >  正文 mysql左右关联 内关联及having用法举例

mysql左右关联 内关联及having用法举例

发布时间:2015-11-22   编辑:jiaochengji.com
为大家举一些mysql左右关联、内关联及having子句应用的例子,供大家学习参考。

以下示例用到的二张表:
user,字段,user_id,email,name
deal,字段deal_id,user_id,deal_name
对应关系,user.user_id = deal.user_id,

--左关联的例子:
select u.*,d.* from user as u left join deal as d on d.user_id = u.user_id;
--右关联的例子:
select u.*,d.* from user as u right join deal as d on d.user_id = u.user_id;
--内关联,其中inner可不写,
select u.* d.* from user as u innerjoin deal as d on d.user_id = u.user_id;

--左关联连写,加上第三个表,shop,字段,shop_id,user_id,shop_name
select u.*,d.*,s.* from user as u left join deal as d on d.user_id = u.user_id left join shop as s on s.user_id = u.user_id;

多表多个连写,同理右关联和内关联,内关联跟普通的自然关联是一样的,上面那一句跟下面这句得到的结果是相同:

select u.* d.* from user as u,deal as d where d.user_id = u.user_id;

区别分析:
左关联,以左边这张表为主表,右边的为附表,得到的数据对左表不加限制(当然,在没有限制的条件下,比如没有where没有having等),同理右关联.
内关联,也就是自然关联对主表的限制就是附表中存在值,才显示数据.所以得到的结论是,左关联适合列表,内关联适合取值.
说说having的用法,having对结果集进行第二次筛选,相信一句话就够了.举个例子吧,查询多次用同一个email注册的用户:

select count(email) as e,username group by email having e>=2

其中group by对数据进行分组.mysql中没有全关联.

您可能感兴趣的文章:
mysql左右关联 内关联及having用法举例
mysql having与where的用法区别在哪?
mysql where和having子句的用法
mysql group by和having实例详解
有关mysql中having子句对组记录进行筛选的例子
mysql where in 用法举例
mysql中的in排序 mysql按in中顺序来排序
mysql where条件语句优化笔记
mysql联合索引与Where子句优化浅析
mysql where or和where in查询语句的效率分析及优化

[关闭]
~ ~