SQL常用高级查询包括:Join查询、子查询。

子查询:

USE flowershopdb

--子查询:在一个select语句使用另一个select 语句作为条件或数据来源.
--查询块:一个select子句.
--嵌套查询:在一个查询块中嵌套另一个查询块.内层查询叫子查询,外层查询叫主查询. --1 不相关子查询:子查询不依赖于主查询,子查询可以独立执行. --作为条件
SELECT * FROM tb_detailed
WHERE c_id = (SELECT c_id FROM tb_category WHERE c_name='生日花')
--作为列
SELECT (SELECT c_name FROM tb_category WHERE c_id=1000),(SElECT d_remark FROM tb_detailed WHERE d_id=2000) --2 相关子查询:子查询依赖于主查询,子查询不可以独立执行.
SELECT de.* FROM tb_detailed de
WHERE de.c_id = (SElECT ca.c_id FROM tb_category ca WHERE ca.c_id=1001 AND ca.c_id=de.d_id ) --关键字:IN ALL ANY
--注:子查询必需有括起来().
--IN 表示查询结果是否在子查询结果集中
--All 表示查询结果要满足子查询的所有条件
--Any 表示查询结果要满足子查询的的任一个条件 -- IN 用于多个结果集
SELECT * FROM tb_detailed
WHERE d_id IN (SElECT d_id FROM tb_detailed WHERE d_remark='生日用花') -- ALL
-- >all、<all、>=all、<all
SELECT de.* FROM tb_detailed de
WHERE de.d_id > ALL(SElECT pr.d_id FROM tb_product pr WHERE pr.p_price>3)
--相当于
SELECT de.* FROM tb_detailed de
WHERE de.d_id > (SElECT MAX(pr.d_id) FROM tb_product pr WHERE pr.p_price>3) -- ANY
-- >any、<any、<=any、>=any
SELECT de.* FROM tb_detailed de
WHERE de.d_id > ANY(SElECT pr.d_id FROM tb_product pr WHERE pr.p_price>3)
--相当于
SELECT de.* FROM tb_detailed de
WHERE de.d_id > ANY(SElECT MIN(pr.d_id) FROM tb_product pr WHERE pr.p_price>3) --关键字:
--EXISTS 用于检查子查询是否至少会返回一行数据,该子查询实际上不返回任何数据,而是返回true或false【指定子查询,检测行的存在】 SELECT * FROM tb_user WHERE EXISTS (SELECT NULL)
--等同于
SELECT * FROM tb_user SELECT de.* FROM tb_detailed de
WHERE EXISTS(SElECT ca.c_id FROM tb_category ca WHERE ca.c_id=1001 AND ca.c_id=de.d_id )
--等同于
SELECT de.* FROM tb_detailed de
WHERE de.c_id IN(SElECT ca.c_id FROM tb_category ca WHERE ca.c_id=1001 AND ca.c_id=de.d_id ) --NOT EXISTS 如果子查询没有返回行,则满足Not Exists中的Where子句
SELECT de.* FROM tb_detailed de
WHERE NOT EXISTS(SElECT ca.c_id FROM tb_category ca WHERE ca.c_id=1001 AND ca.c_id=de.d_id )

Join查询:

CREATE DATABASE selectdb
USE selectdb SELECT * FROM A
SELECT * FROM B --多表条件查询
SELECT * FROM A,B WHERE A.A=B.A --Jion表连接
--[join是和哪个表连接,on后是连接的关系是什么] --内连接 INNER JOIN
-- 只连接匹配的行
SELECT A.A,A.B,A.C,B.D,B.E FROM A INNER JOIN B
ON A.A=B.A --左外连接 LEFT [OUTER] JOIN
--包含左边表的全部行(不管右边的表中是否存在与它们匹配的行),以及右边表中全部匹配的行
SELECT A.A,A.B,A.C,B.D,B.E FROM A LEFT JOIN B
ON A.A=B.A --右外连接 RIGHT [OUTER] JOIN
--包含右边表的全部行(不管左边的表中是否存在与它们匹配的行),以及左边表中全部匹配的行
SELECT A.A,A.B,A.C,B.D,B.E FROM A RIGHT JOIN B
ON A.A=B.A --全连接 FULL [OUTER] JOIN
-- 包含左、右两个表的全部行,不管另外一边的表中是否存在与它们匹配的行。
SELECT A.A,A.B,A.C,B.D,B.E FROM A FULL JOIN B
ON A.A=B.A --交叉连接 CROSS JOIN
-- 生成笛卡尔积-它不使用任何匹配或者选取条件,而是直接将一个数据源中的每个行与另一个数据源的每个行都一一匹配
--A中的每一条数据与B中的每一条数据交叉 3*3
SELECT * FROM A CROSS JOIN B --自连接
--自身连接是指同一个表自己与自己进行连接。这种一元连接通常用于从自反关系(也称作递归关系)中抽取数据。
SELECT *
FROM B b1
JOIN B b2
ON b1.A=b2.D SELECT * FROM B

更多查询链接:http://www.cnblogs.com/hoojo/archive/2011/07/16/2108129.html

SQL2-子查询、join查询的更多相关文章

  1. 基于双下划线的跨表查询 (join查询)

    因为你的数据库中的查询就是重点  那么你的django提供的orm也是查询语句最重点 ,也提供的查询方法比较的多,下面我们学习下类似于MYSQL的连表(join)查询 Django 还提供了一种直观而 ...

  2. tp5 thinkphp5 多表关联查询 join查询

    model下: $res = \think\Db::name('article') ->alias("a") //取一个别名 ->join('admin ad','a. ...

  3. Mysql 拼接字段查询语句和join查询拼接和时间查询

    个人平时记录的,有点乱 1.修改时间字段,如果时间字段的类型是date或者是datetime类型的 update 表名 set 时间字段 = DATE_FORMAT(NOW(),'%Y-%m-%d % ...

  4. Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等)

    Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等) 子查询 描述:查询订单数超过5的顾客信息 查询句法: var 子查询 = from c i ...

  5. sql 内连接 子查询 合并查询

    -- 内连接:-- 显示员工姓名.工资和公司所在地 select e.ename, e.sal, d.dname from emp e,dept d; -- 笛卡尔积 select e.ename, ...

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

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

  7. 18 12 06 sql 的 基本语句 查询 条件查询 逻辑运算符 模糊查询 范围查询 排序 聚合函数 分组 分页 连接查询 自关联 子查询

    -- 数据的准备 -- 创建一个数据库 create database python_test charset=utf8; -- 使用一个数据库 use python_test; -- 显示使用的当前 ...

  8. 【HIVE】(3)联合查询join、时间戳函数、字符串函数

    数据 t_join1.txt 1,a,1 2,b,2 3,c,4 t_join2.txt 1,2a 2,2b 3,2c 建表.导入: create table t_join1(id int, name ...

  9. 子查询 & 联合查询

    子查询 嵌套在其他语句内部的select语句称为子查询或内查询,外层的语句可以是insert.update.delete.select等,一般select作为外层语句较多.外面如果为select语句, ...

随机推荐

  1. C++顺序性容器、关联性容器与容器适配器

    什么是容器 首先,我们必须理解一下什么是容器,在C++ 中容器被定义为:在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器.很简单,容器就是保存其它对象的对象 ...

  2. jQuery源码笔记——准备

    将变量局部化 作为一个库首要解决的问题就是防止影响全局的变量.自执行匿名函数可以很好的实现这一点. 传入window,undefiend是将全局变量改为局部变量,根据作用域链访问原理,访问更快一些,. ...

  3. Semantic UI基础使用教程

    自己今后要使用Semantic UI进行项目开发了,一步步的记录下来,供大家参考,也让自己去简单的学习一下,有空了就会更新一点东西,大家有什么问题可以相互交流一下,文采不是很好,希望大家要多多见谅,这 ...

  4. .net通用权限框架B/S (三)--MODEL层(2)

    接上篇 实体数据模型保存后生成上下文和实体 上下文和实体实际是由根据.tt模版生成的 当实体数据模型.edmx更新保存后,上下文和实体就会根据.tt模版自动更新 生成的上下文继承 DbContext ...

  5. android监听键盘

    android中的带有输入功能的页面布局经常被弹出的键盘遮挡,一种处理方法是监听键盘的弹出,设置布局的padding或隐藏某些占位控件,使得输入框不被键盘遮挡.一种常用的方法是当Activity设置为 ...

  6. 对List对象按照某个成员变量进行排序

    /** * 对List对象按照某个成员变量进行排序 * @param list List对象 * @param sortField 排序的属性名称 * @param sortMode 排序方式:ASC ...

  7. Web Service和Servlet的区别(转)

    Servlet是Java对于Web开发而产生的一项技术,可以说Servlet技术是Java专有的,它是服务器端的技术,客户端通常是浏览器. WebService是在DCOM/CORBA等分布式技术之后 ...

  8. QF——UI之UIImageView及UIView的形变属性transform

    UIImageView: 专门用来放置图片的视图.它里面放置的图片是[UIImage imageNamed: (NSString) imgName]生成的,注意千万别只写成图片NSString类型的名 ...

  9. oracle 取头十条数据

    select * from(select * from table order by age)where rownum < 11

  10. SilverlightLoader使用托管代码创建自定义载入界面及动态加载XAP

    Silverlight实现动态加载xap和Splash Screen.收藏! 内容来自 http://silverlightchina.net/html/tips/2010/0115/588.html