精华内容
下载资源
问答
  • 作为计算字段使用子查询使用子查询的另一方法是创建计算字段。假如需要显示 customers表中每个客户的订单总数。订单与相应的客户ID存储在 orders 表中。为了执行这个操作,遵循下面的步骤。(1) 从 customers 表中...

    作为计算字段使用子查询

    使用子查询的另一方法是创建计算字段。假如需要显示 customers表中每个客户的订单总数。订单与相应的客户ID存储在 orders 表中。

    为了执行这个操作,遵循下面的步骤。

    (1) 从 customers 表中检索客户列表。

    (2) 对于检索出的每个客户,统计其在 orders 表中的订单数目。

    正如前两章所述,可使用 SELECT COUNT ( *) 对表中的行进行计数,并且通过提供一条 WHERE 子句来过滤某个特定的客户ID,可仅对该客户的订单进行计数。例如,下面的代码对客户 10001 的订单进行计数:

    输入:select count(*) as orders from orders where cust_id = 10001;

    为了对每个客户执行 COUNT(*) 计算,应该将 COUNT(*) 作为一个子查询。请看下面的代码:

    输入:select cust_name,cust_state,(select count(*) from orders where orders.cust_id = customers.cust_id) as orders from customers order by cust_name;

    输出:

    1494387324146356.png

    分析:这 条 SELECT 语 句 对 customers 表 中 每 个 客 户 返 回 3 列 :cust_name 、 cust_state 和 orders 。 orders 是一个计算字段,它是由圆括号中的子查询建立的。该子查询对检索出的每个客户执行一次。在此例子中,该子查询执行了5次,因为检索出了5个客户。

    子查询中的 WHERE 子句与前面使用的 WHERE 子句稍有不同,因为它使用了完全限定列名(在第4章中首次提到)。下面的语句告诉SQL比较orders 表中的 cust_id 与当前正从 customers 表中检索的 cust_id :where orders.cust_id = customers.cust_id

    相关子查询(correlated subquery) 涉及外部查询的子查询。这种类型的子查询称为相关子查询。任何时候只要列名可能有多义性,就必须使用这种语法(表名和列名由一个句点分隔)。为什么这样?

    我们来看看如果不使用完全限定的列名会发生什么情况:

    输入:select cust_name,cust_state,(select count(*) from orders where cust_id = cust_id) as orders from customers order by cust_name;

    输出:

    1494387362431093.png

    分析:显然,返回的结果不正确(请比较前面的结果),那么,为什么会这样呢?有两个 cust_id 列,一个在 customers 中,另一个在orders 中,需要比较这两个列以正确地把订单与它们相应的顾客匹配。如果不完全限定列名,MySQL将假定你是对 orders 表中的 cust_id 进行自身比较。而 SELECT COUNT(*) FROM orders WHERE cust_id = cust_id;总是返回 orders 表中的订单总数(因为MySQL查看每个订单的 cust_id是否与本身匹配,当然,它们总是匹配的)。

    虽然子查询在构造这种 SELECT 语句时极有用,但必须注意限制有歧义性的列名。

    不止一种解决方案 正如本章前面所述,虽然这里给出的样例代码运行良好,但它并不是解决这种数据检索的最有效的方法。在后面的章节中我们还要遇到这个例子。

    逐渐增加子查询来建立查询 用子查询测试和调试查询很有技巧性,特别是在这些语句的复杂性不断增加的情况下更是如此。用子查询建立(和测试)查询的最可靠的方法是逐渐进行,这与MySQL处理它们的方法非常相同。首先,建立和测试最内层的查询。然后,用硬编码数据建立和测试外层查询,并且仅在确认它正常后才嵌入子查询。这时,再次测试它。对于要增加的每个查询,重复这些步骤。这样做仅给构造查询增加了一点点时间,但节省了以后(找出查询为什么不正常)的大量时间,并且极大地提高了查询一开始就正常工作的可能性。

    【相关推荐】

    1.什么是mysql子查询?如何利用子查询进行过滤?

    2.mysql中什么是联结和关系表?

    3.为什么使用联结和如何创建联结

    4.MySQL中WHERE子句重要性和如何联结多个表

    展开全文
  • 使用子查询的另一个方法是创建计算字段。假如需要显示Customers表中每个顾客的订单总数。订单与相应的顾客ID存储在Orders表中。 步骤如下: 1、从customers表中检索顾客列表; 2、对于检索出的每个顾客,统计其在...

    使用子查询的另一个方法是创建计算字段。假如需要显示Customers表中每个顾客的订单总数。订单与相应的顾客ID存储在Orders表中。
    步骤如下:
    1、从customers表中检索顾客列表;
    2、对于检索出的每个顾客,统计其在Orders表中的订单数目。

    SELECT cust_name, cust_state, (SELECT COUNT(*) 
    FROM orders WHERE orders.cust_id = customers.cust_id ) AS orders
    FROM customers
    ORDER BY cust_name;
    

    在这里插入图片描述

    展开全文
  • 数据库子查询和join比较

    千次阅读 2019-02-27 15:45:00
    子查询进行SELECT语句嵌套查询,可以一次完成很多逻辑上需要多个步骤才能完成的SQL操作。子查询虽然很灵活,但是执行效率并不...执行子查询时,MYSQL需要创建临时表,查询完毕后再删除这些临时表,所以,子查询的速...

    子查询进行SELECT语句嵌套查询,可以一次完成很多逻辑上需要多个步骤才能完成的SQL操作。子查询虽然很灵活,但是执行效率并不高。

    select goods_id,goods_name from goods where goods_id = (select max(goods_id) from goods);
    执行子查询时,MYSQL需要创建临时表,查询完毕后再删除这些临时表,所以,子查询的速度会受到一定的影响,这里多了一个创建和销毁临时表的过程。

    可以使用连接查询(JOIN)代替子查询,连接查询不需要建立临时表,因此其速度比子查询快。

     

    https://segmentfault.com/q/1010000000134455

    对于mysql,从来都不推荐使用子查询和join。因为本身join的效率就是硬伤,一旦数据量上去效率很难保证,强烈推荐分别根据索引单表取数据,然后在程序里面做join,merge数据。

     

    http://m.zhizuobiao.com/mysql/mysql-18030500052/

    互联网公司mysql数据库不要使用join,建议service层采用in等子查询解决方法

    互联网公司的业务,往往是并发场景多,DB查询频繁,有一定用户规模后,往往要做分库分表。

     

    阿拉巴巴的淘宝网,是从oracle迁移到mysql。原因是mysql免费,开源。互联网公司起步阶段都穷,往往要采用mysql。oracle太贵了,适合不差钱的行业,如金融,证券,军工,国企,制造业。oracle是RDBMS的NO1,多年数据库技术积累,很多方面强于mysql。

     

    互联网行业,业务请求量大,整个架构,数据库是最底层的,瓶颈往往是数据库。建议数据库只是作为数据store的工具,而不要添加业务上去。

     

    不使用join的原因: 

    1.DB承担的业务压力大,能减少负担就减少。当表处于百万级别后,join导致性能下降; 

    2.分布式的分库分表。这种时候是不建议跨库join的。目前mysql的分布式中间件,跨库join表现不良。 

    3.修改表的schema,单表查询的修改比较容易,join写的sql语句要修改,不容易发现,成本比较大,当系统比较大时,不好维护。

     

    不使用join的解决方法: 

    在业务层,单表查询出数据后,作为条件给下一个单表查询。也就是子查询。 

    会担心子查询出来的结果集太多。mysql对in的数量没有限制,mysql限制整条sql语句的大小。通过调整参数max_allowed_packet ,可以修改一条sql的最大值。建议在业务上做好处理,限制一次查询出来的结果集是能接受的。

    转载于:https://www.cnblogs.com/fxl-njfu/p/10444171.html

    展开全文
  • Oracle 如何创建视图步骤

    千次阅读 2019-03-18 21:47:10
    简单教学例子 在 create view 语句中嵌入子查询子查询可以是复杂select语句 总结例子 创建视图语法写法:

    简单教学例子
     
    在 create view 语句中嵌入子查询,子查询可以是复杂的select语句

    总结例子
    创建视图语法写法:

    展开全文
  • 子查询 in exist

    2017-11-14 18:53:00
    1.子查询是嵌套在其他查询中常规T-SQL查询(用括号括起来),当需要一个SELECT语句作为数据部分基础或另一个查询中条件要素时,就是创建子查询。 2.子查询满足需求: (1).把一个查询分解成一系列...
  • 1. 构建空白窗体,设计要查询的字段名称等输入框 2.构建符合查询需要的 查询,用于对要查找的内容进行整合,以便快速得出查询结果,同时将查询作为查询窗体的窗体 3.添加 查询按钮,并设置查找函数,实现查找...
  • eclipse中创建子包问题

    千次阅读 2019-05-10 21:49:01
    在eclipse初学者中肯定会遇到这样低级的问题,看视频学习的时候人家在创建子包,按着他的步骤怎么也创建不了 通过查询果然发现了问题的所在,问题就出在eclipse中有一个package presentation 模式中的Hierarchical...
  • java技术--子查询和连接查询比较

    千次阅读 2019-06-05 14:28:41
    1.3.执行子查询时,MYSQL需要创建临时表,查询完毕后再删除这些临时表,所以,子查询的速度会受到一定的影响,这里多了一个创建和销毁临时表的过程 2.连接查询(join) 2.1.可以使用连接查询...
  • SQL还允许创建子查询(subquery),即嵌套在其他查询中查询。 利用子查询进行过滤 例子:假如需要列出订购物品TNT2所有客户 (1) 检索包含物品TNT2所有订单编号。 (2) 检索具有前一步骤列出订单编号所有...
  • 第十四章 使用子查询

    2018-10-23 18:29:00
    SQL还允许创建子查询(subquery),即嵌套在其他查询中查询。 利用子查询进行过滤: Q:检索出订购物品TNT2所有客户。 问题分析: (3)检索前一步骤返回所有客户ID客户信息。 SELECE cust_name...
  • Sql Server系列:子查询

    2015-04-26 13:12:00
    在有一个SELECT语句通过使用小括号创建子查询,作为另一个查询的部分数据或条件的基础。  子查询通常用于满足以下某个需求:  ◊ 将一个查询分解为一系列的逻辑步骤  ◊ 提供一个列表作为WHERE子句或[IN | ...
  • 子查询虽然很灵活,但是执行效率并不高,原因:执行子查询时,MySQL需要创建临时表,查询完毕后再删除这些临时表,所以,子查询的速度会受到一些影响,这里多了一个创建和销毁临时表的过程。优化方式:可以使用JOIN...
  • 使用连接(JOIN)来代替子查询(Sub-Queries) MySQL从4.1开始支持SQL的子查询。这个技术可以使用SELECT语句来创建一个单列查询结果,然后把这个结果... 使用子查询可以一次性完成很多逻辑上需要多个步骤才能完成
  • 注:基表中存放是实际数据,使用视图时,会运行视图里sql查询语句创建出一张临时表,视图中存放是sql语句2.操作步骤语句格式:create view 视图名称(<视图列名1>,<视图列名2>,····)as<...
  • 目录创建module并实现数据新增,查询功能步骤如下:1.创建module2.改pom2.1父pom2.2 模块pom3.写yml4.主启动5.业务类5.1.创建sql5.2.编写entities5.3.编写dao5.4.编写service5.5.编写controller 创建module并实现...
  • 11.2 利用子查询进行过滤 SQL还允许创建子查询(subquery),即嵌套在其他查询中的查询。 现在,假如需要列出订购物品RGAN01的所有顾客,应该怎样检索?下面列出具体的步骤。1) 检索包含物品RGAN01的所有订单的...
  • 一、需求比如,我们有两个对象,一个问答,一个评论,类似百度知道一样东西;我们查询一个问答时候,可以查看其下面评论; 我在查询J_questionandanswer这张表时候...1、j_comment表的创建; 2、comment
  • 在 onCreateShowAnimator/onCreateDismissAnimator 中创建针对contentView中不同viewanimator时无效,创建的animator总是全部作用于contentView。 <p><code>protected Animator onCreateShowAnimator() { ...
  • 使用SQL查询ArcGIS版本数据

    千次阅读 2011-05-05 11:52:00
    刚才接到用户询问,是否可以使用SQL语句查询出ArcGIS某个子版本... 如下图:Default版本数据 如下图:mvedits版本数据 查看步骤 1:创建多版本视图 2:查看default版本数据 3:将目标版本设置为子版本 4:查看mve
  • 下面实例代码使用LINQ to XML查询XML文件中指定元素的子元素,并将元素及其值显示在网页中。具体步骤如下。(1)将Books.xml文件访问地址转换为物理地址。(2)使用XElement类Load()方法读取Books.xml文件...
  • 使用子查询可以一次性完成很多逻辑上需要多个步骤才能完成SQL操作, 同时也可以避免事务或者表锁死,并且写起来也很容易。但是,有些情况下,子查询可以被更有效率连接(JOIN)替代。原语句: SELECT ...
  • 以下所有操作在查询管理器中手工书写sql语句完成1、按下列步骤创建数据库和表1.2、在这个数据库中创建一个名为[学生表]表,由[学号]、[姓名]、[专业]、[班级]字段组成。[学号] 字段为主键,类型为int;[姓名] 和 ...
  • 使用子查询可以一次性完成很多逻辑上需要多个步骤才能完成SQL操作,同时也可以避免事务或者表锁死,并且写起来也很容易。但是,有些情况下,子查询可以被更有效率连接JOIN替代。join实现原理join实现是...
  • Java 中访问数据库的步骤如下: 1)注册驱动; 2)建立连接; 3)创建 Statement; 4)执行 sql 语句; 5)处理结果集(若 sql 语句为查询语句); 6)关闭连接。 PreparedStatement 被创建时即指定了...
  • 派生表类似于临时表,但是在SELECT语句中使用派生表比临时表简单得多,因为它不需要创建临时表的步骤。 术语:*派生表*和子查询通常可互换使用。当SELECT语句的FROM子句中使用独立子查询时,我们将其称为派生表。 ...
  • //查找,实现了按学号或姓名查找,里面采用了函数调用函数方法实现了该功 void name() { FILE *fp=NULL; stu *xs=NULL,*temp=NULL,*pr=NULL; char name[20]; int flag=1; printf("\n 输入要查...
  • 1.子查询1.1....执行子查询时,MYSQL需要创建临时表,查询完毕后再删除这些临时表,所以,子查询的速度会受到一定的影响,这里多了一个创建和销毁临时表的过程2.连接查询(join)2.1.可以使用连接查询(JOIN...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 258
精华内容 103
关键字:

创建子查询的步骤