mysql rand() 子查询_MySQL ------ 子查询(十三)

查询(query):任何SQL 都是查询,但此术语一般指select 语句

子查询(subquery):嵌套在查询中的查询,MySQL4.1 引入对子查询的支持。

接下来得就比较有意思了,需要你对于表与表之间的关系有所了解,子查询一般用于跨表查询

一、基本使用

-- 多表查询,返回的订单编码,用于下一次查询 
select cust_id,order_num from orders where order_num in(  select order_num from orderitems where prod_id='fb');

508934b7fa30a4fdd291f0093ccac6d8.png

顺序的就是从里到外,主要就是查询里面套查询

注意:

  1、在select 语句中,子查询总是从内向外处理的,先执行的使括号内的查询语句,根据此查询返回的以IN 操作符要求格式传递到外部查询

  2、包含子查询的select 语句难以阅读和调试,可以 在书写的时候,分为多行并适当缩进

--  三个表查,这其中用到了外键的概念 主要就是 prod_id  order_num cust_id 
select cust_id,cust_name,cust_contact from customers where cust_id in(        select cust_id from orders where order_num in(         select order_num from orderitems where prod_id='tnt2'));

1f0e1e81b95194056d2c8530160a9d74.png

上述,三条主要就是根据商品id 找到对应订单编码,根据订单编码找到客户id ,根据客户id 找到客户信息

注意:

  1、where 子句中使用子查询能够编写出功能很强并且很灵活的sql语句,而且对嵌套的子查询数目也没有限制,不过在实际中语句性能的限制,不能嵌套太多(虽然对子查询数目没有限制,但是由于性能原因,不要嵌套太多

  2、where 子句中使用子查询,应保证select 语句具有与where子句相同数目的列(通常子查询返回单个列并与单个列匹配,若有需要也可以使用多个列),从里到外一层一层

  3、虽然子查询一般与IN 操作符结合使用,但也可以与其他操作符结合使用

  4、使用子查询并不总是执行这种类型的数据检索的最有效方法

二、作为计算字段使用子查询

使用子查询的另一种方法就是创建计算字段,就是查询语句放在select 与from 之间

-- 显示customers 表中每个客户的订单总数,订单与相应的客户id 存储在order 表中select cust_name,cust_state,( select count(*) from orders where orders.cust_id = customers.cust_id) as orders   from customers order by cust_name;

62607f60720c439f05f04414c6524560.png

此语句中 orders.cust_id = customers.cust_id 使用了完全限定,这个可以理解为 根据 orders表中的 cust_id 这个字段进行查询,值为 customers表中的cust_id 的有几个,

如下所示:

93664b9ca65b00e8d21f62556071cb99.png

相关子查询(correlated subquery): 涉及外部查询的子查询。任何时候只要列名可能有多异性,就要使用这种语法(表名点 表中相关列名)。

如果不使用,就是没有完全限定

1d1445b9db33d75105d491351595b3cc.png

两个cust_id 在不同的表中,如果不用完全限定,mysql 假定你是对 order 表中的cust_id 进行自身比较,

34ffc0bf38372f2d31aa60fc85d228bb.png

返回的是order 表中的总数,所以必须限制有歧义性的列名。

注意:

  1、多表查询时要使用完全限定

  2、子查询并不是解决这种数据检索的最有效方法,有多种解决方案

  3、用子查询建立查询的最可靠的方法是逐渐 进行,与mysql 的处理方式相同,建议先测试内层查询,在根据返回的数据测试外层,确人正常后在嵌入到子查询,随牺牲了一点时间但保证了正确。

  4、子查询可以用在 select 与from 之间,也可以用在where 子句后

  5、查询顺序从内到外

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/441440.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【CodeForces - 616D 】Longest k-Good Segment (twopointer,尺取)

题干: The array a with n integers is given. Lets call the sequence of one or more consecutive elements in a segment. Also lets call the segment k-good if it contains no more than k different values. Find any longest k-good segment. As the inp…

centos 6.5 apache mysql php_CentOS 6.5系统安装配置LAMP(Apache+PHP5+MySQL)服务器环境

简单点的:1.关闭SELINUX:setenfo 0 暂时关闭2.安装Apache:yum install httpd3.安装MySQL:yum install mysql mysql-server4.安装PHP:yum install php5.相关的配置:PHP关联MySQL;httpd出错信息…

【HDU - 5585】Numbers (水题,数学,数论)

题干&#xff1a; There is a number N.You should output "YES" if N is a multiple of 2, 3 or 5,otherwise output "NO". Input There are multiple test cases, no more than 1000 cases. For each case,the line contains a integer N.(0<N<…

【HDU - 2255】奔小康赚大钱(KM算法模板,二分图最优匹配)

题干&#xff1a; 传说在遥远的地方有一个非常富裕的村落,有一天,村长决定进行制度改革&#xff1a;重新分配房子。 这可是一件大事,关系到人民的住房问题啊。村里共有n间房间,刚好有n家老百姓,考虑到每家都要有房住&#xff08;如果有老百姓没房子住的话&#xff0c;容易引起…

mysql 如何调用函数结果_MySQL自定义函数调用不出结果

自定义函数的代码&#xff1a;DROP FUNCTION IF EXISTS fn_HrStaffBase_GetNameFromidCarddelimiter //CREATE FUNCTION fn_HrStaffBase_GetNameFromidCard (a VARCHAR(30))RETURNS VARCHAR(50)beginreturn (SELECT staff_name FROM hr_staff_base where idCard a);END //--…

【CodeForces - 1066A~E】水题,模拟(有技巧),思维,题意难懂的模拟,二进制问题(有技巧)

A. 题目大意&#xff1a; x坐标上1~L有L个点都是整数&#xff0c;每v个长度就有一个灯亮着&#xff0c;但是有 [ l , r ] 这段区间上有列火车挡住了&#xff0c;问你能看到多少亮灯。 解题报告&#xff1a; 大水题啊&#xff0c;找几个样例就会发现需要特殊处理一下左边界恰好…

【CodeForces - 987C 】Three displays (dp,最长上升子序列类问题,三元组问题)

题干&#xff1a; It is the middle of 2018 and Maria Stepanovna, who lives outside Krasnokamensk (a town in Zabaikalsky region), wants to rent three displays to highlight an important problem. There are nn displays placed along a road, and the ii-th of th…

python中with open写csv文件_Python中的CSV文件使用with语句的方式详解

是否可以直接使用with语句与CSV文件&#xff1f;能够做这样的事情似乎很自然&#xff1a;import csvwith csv.reader(open("myfile.csv")) as reader:# do things with reader但是csv.reader不提供__enter__和__exit__方法,所以这不行.但是我可以分两步做&#xff1a…

【UVA - 11383】Claw Golden Tiger (二分图最优匹配,KM算法原理)

题干&#xff1a; 粘贴不过来。。。 题目大意&#xff1a; 500*500带权格子&#xff0c;每行每列要确定一个值&#xff0c;使row[i]col[j] > val[i][j]&#xff0c;要使所有row值和col值的和最小 输出每行的row[i],和每列的col[i]。 解题报告&#xff1a; 跑一边KM&#…

git object 很大_这才是真正的Git——Git内部原理

本文以一个具体例子结合动图介绍了Git的内部原理&#xff0c;包括Git是什么储存我们的代码和变更历史的、更改一个文件时&#xff0c;Git内部是怎么变化的、Git这样实现的好处等等。TL;DR本文以一个具体例子结合动图介绍了Git的内部原理&#xff0c;包括Git是什么储存我们的代码…

【CodeForces - 195D】Analyzing Polyline (思维,卡精度的处理方式)

题干&#xff1a; As Valeric and Valerko were watching one of the last Euro Championship games in a sports bar, they broke a mug. Of course, the guys paid for it but the barman said that he will let them watch football in his bar only if they help his son …

【CodeForces - 985D】Sand Fortress (二分,贪心,思维构造,技巧,有坑)

题干&#xff1a; You are going to the beach with the idea to build the greatest sand castle ever in your head! The beach is not as three-dimensional as you could have imagined, it can be decribed as a line of spots to pile up sand pillars. Spots are numbe…

mysql多实例脚本_mysql多实例脚本

mysql多实例脚本##mariadb和mysql-server的通用多实例脚本。vi mdp.sh 脚本内容参考内容如下#!/bin/bashecho ‘等待mariadb-server或mysql-server服务软件安装完毕’while truedoyum install -y mariadb-server mariadb &>/dev/nullyum install -y mysql-serv…

scrapy 分布式 mysql_Scrapy基于scrapy_redis实现分布式爬虫部署的示例

准备工作1.安装scrapy_redis包,打开cmd工具,执行命令pip install scrapy_redis2.准备好一个没有BUG,没有报错的爬虫项目3.准备好redis主服务器还有跟程序相关的mysql数据库前提mysql数据库要打开允许远程连接,因为mysql安装后root用户默认只允许本地连接,详情请看此文章部署过程…

(精)DEVC++的几个实用小技巧

依赖 DEV C 5.11 最新版 下载安装DEV C后&#xff0c;使用DEV C打开一个随便的cpp文件&#xff0c;你看到的应该是这样的界面。&#xff08;为了节约读者的流量&#xff0c;图片进行了有损压缩&#xff0c;但是字看得清楚&#xff09; 重点是确认工具栏有AStyle选项。 相信…

win10一按右键就闪屏_升级Win10正式版后屏幕一直闪烁正确的解决办法

Win10正式版屏幕一直闪烁怎么办呢&#xff1f;升级到Win10正式版并进入Windows桌面后&#xff0c;发现屏幕一直不断的闪烁&#xff0c;此时无法执行任务操作。小编最近在升级到Win10正式版后才遇到了这个问题&#xff0c;后台经过反复思考和探索&#xff0c;终于解决了问题&…

KMP 常用模板

写在前面&#xff1a; 代码中有的是i&#xff0c;j&#xff0c;有的是j&#xff0c;k&#xff0c;总之不唯一啊&#xff01;&#xff01;&#xff01;这个一定要弄清楚&#xff01;&#xff01;&#xff01;我没有统一。。 从0开始的字符串&#xff0c;加速版。 void getnext…

在spark的软件栈中_问:Spark Streaming是什么软件栈中的流计算?

问&#xff1a;Spark Streaming是什么软件栈中的流计算?A:不能确定,B:,C:,D:正确答案:绛旓細姣斿皵路鐩栬尐解析&#xff1a;问&#xff1a;Spark Streaming是什么软件栈中的流计算?A:不能确定,B:,C:,D:相关问题&#xff1a;“逻辑与”的运算符是( )。A:&&B:&C:…

【CodeForces - 195A】Let's Watch Football (追及问题,模拟)

题干&#xff1a; Valeric and Valerko missed the last Euro football game, so they decided to watch the games key moments on the Net. They want to start watching as soon as possible but the connection speed is too low. If they turn on the video right now, i…

下面不是mysql特性_下面( )不是MySQL的特性。_学小易找答案

【单选题】如何检测 2型糖尿病【填空题】<5>以下do-while语句中循环体的执行次数是( ). a10; b0; do { b2; a-2b; } while (a>0);【单选题】2 型糖尿病 多 发在什么年龄段【填空题】<5>以下程序的输出结果为( )。 #include "stdio.h" main() {int a; …