MySQL的查询,子查询,联结查询,联合查询

一.mysql查询的五种子句
where(条件查询)、having(筛选)、group by(分组)、order by(排序)、limit(限制结果数)

二.子查询
1.where 子查询
SELECT * FROM tb1 WHERE cat_id IN (SELECT max(id) FROM tb2 GROUP BY cat_id);

2.from 子查询
SELECT t2_id FROM (SELECT t2_id FROM tb2 ORDER BY t2_id DESC);

3.exists子查询(把外层查询结果拿到内层,看内层的查询是否成立,成立就返回外层查询的数据)
SELECT * FROM test5 WHERE EXISTS (SELECT id FROM test2 where test2.id=test5.id);

查询test5中的第一行id=1, 然后执行SELECT id FROM test2 where test5.id=1;如果存在,就返回这行数据,不存在,就不返回

三.UNION用法,联合查询(纵向/行联结)
(把两次或多次的查询结果合并起来,要求查询的列数一致,推荐查询的对应的列类型一致,可以查询多张表,多次查询语句时如果列名不一样,则取第一次的列名!如果不同的语句中取出的行的每个列的值都一样,那么结果将自动会去重复,如果不想去重复则要加all来声明,即union all)

SELECT * from test2 UNION SELECT * FROM test5;
对test2结果集和test5结果集行联合起来(去重)

SELECT * from test2 UNION ALL SELECT * FROM test5;
对test2结果集和test5结果集的行联合起来(不去重)

四.联结查询(横向/列联结)
1.内联结(INNER JOIN,INNER可以省略,以下三种写法等效)
SELECT * FROM test2,test5 WHERE test2.id=test5.id;
SELECT * FROM test2 JOIN test5 ON test2.id=test5.id;
SELECT * FROM test2 JOIN test5 USING(id);//如果两个表的列名相同,可以用USING代替ON

将test2和test5的结果集的列按条件联结起来,是并集

2.左联结
SELECT * FROM test2 LEFT JOIN test5 ON test2.id=test5.id;

以左表test2为准,和test5联结,test2中的数据会被全部取出.

3.右联结
SELECT * FROM test2 RIGHT JOIN test5 ON test2.id=test5.id;

以右表test5为准,和test2联结,test5中的数据会被全部取出.

日常使用固定一种,用左联结代替右联结.

内联结和左联结的区别:

内联结取出了两个表都有的记录,如果一个表有.另一个表没有,则不取出

左联结取出了左表中所有的记录,不管有表有没有该对应记录

参考:

http://www.cnblogs.com/rollenholt/archive/2012/05/15/2502551.html

最新文章

  1. Silverlight ComboBox with TreeView
  2. phpcms 05
  3. 万能写入sql语句,并且防注入
  4. 49.关于Quartus和ISE中ROM的初始化和仿真的一些小结
  5. 拥抱ARM妹纸第二季 之 第三次 给我变个月亮,让约会更浪漫!
  6. 数字签名.sys文件的步骤
  7. 引用(ajaxfileupload.js) ajaxfileupload.js报这错jQuery.handleError is not a function
  8. 五年26个版本:Linux系统内核全程回顾
  9. Parallel.For 你可能忽视的一个非常实用的重载方法
  10. div的替代品
  11. Linux - 设置Centos控制台模式的分辨率
  12. [原创]一种专门用于前后端分离的web服务器(JerryServer)
  13. Linux PXE无人值守网络装机
  14. asp.net动态加载程序集创建指定类的实例及调用指定方法
  15. WCF 非http寄宿IIS
  16. IOS逆向-砸壳笔记
  17. 如何解决“504 Gateway Time-out”错误
  18. java bean属性拷贝工具类比对(性能+功能)
  19. 三星GT-N8010刷机教程
  20. linux 网络安全不完全笔记

热门文章

  1. 【CF1020E】Sergey's problem(构造)
  2. Java笔记(一)
  3. 结构型设计模式之享元模式(Flyweight)
  4. 【调试】如何使用javascript的debugger命令进行调试(重要)
  5. 如何在natTable表格上添加双击事件
  6. centos6源码编译安装lnmp环境
  7. App保持登录状态的常用方法(转)
  8. teamviewer13报错
  9. [CTF]Capture The Flag -- 夺旗赛
  10. JsonConfig处理日期时间