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. MVC理解

    1:MVC 中的@是什么意思?   类似于<% %>只不过它没有闭合的,这是MVC3.0的新特性2:关于ASP.NET MVC的Html.BeginForm()方法Html.BeginFo ...

  2. jquery ajax 参数可以序列化

    <form> <input type="text" name="FirstName" value="Bill" /> ...

  3. vb.net常用函数

    当然,这些都可以从MSDN查到,但是有时候打开帮助老慢的,所以先放到这里放一放,查个函数什么的比较快一点.都是从网上搜来的.Abs(number) 取得数值的绝对值. Asc(String) 取得字符 ...

  4. iOS-Core Text 入门

    NSTextView和Attribued String 第一次接触苹果系的富文本编程是在写Mac平台上的一个输入框的时候,输入框中的文字可以设置各种样式,并可以在文字中间插入图片,好在Mac的AppK ...

  5. api (三)文本字符输出 (转)

    在使用Win32编程时,我们常常要输出文本到窗口上,Windows所有的文本字符或者图形输出都是通过图形设备接口(GDI)进行的,Windows的三大核心组件之一的GDI32.dll封装了所有的文本和 ...

  6. poj3122--二分加贪心

    大致题意: 就是公平地分披萨pie 我生日,买了n个pie,找来f个朋友,那么总人数共f+1人 每个pie都是高为1的圆柱体,输入这n个pie的每一个尺寸(半径),如果要公平地把pie分给每一个人(就 ...

  7. OC语法8——@class关键字

    @class关键字: 在当前类中若要引用其他类的对象作成员变量(Book  *book),我们以前采用的方式是 #import "Book.h" 但 #import "B ...

  8. Ubuntu12.04 配置Java开发环境:JDK1.7+Eclipse+Tomcat7.0

    软硬件环境 Ubuntu12.04+JDK1.7+Eclipse+Tomcat7.0 内容列表 1.安装JDK1.7,配置JAVA环境 2.安装Eclipse 3.安装Tomcat7.0 1.安装JD ...

  9. 事件绑定之.bind()

    .bind(eventType[,eventData],handler(eventObject)) 描述:为一个元素绑定一个事件处理程序,bind()绑定方法的时候元素必须已经存在. -eventTy ...

  10. CDC变更数据捕获

    CDC变更数据捕获 (2013-03-20 15:25:52)   分类: SQL SQL Server中记录数据变更的四个方法:触发器.Output子句.变更数据捕获(Change Data Cap ...