欢迎投稿

今日深度:

MySQL子查询,MySQL子

MySQL子查询,MySQL子


到目前为止我们所看到的SELECT语句都是简单查询,即从单个数据库表中检索数据的单条语句。SQL还允许创建子查询,即嵌套在其他查询语句中的查询。

下面给出嵌套查询的例子。


一个表示存储订单信息,包括订单号,客户ID,订单日期等,如下所示:



一张表示存储订单物品信息,如下:



还有一张表存储的是客户的信息,如下:



假如现在的需求是要找出订购物品TNT2的所有客户。我们发现通过第二张订购物品表能够获取到订单编号,依据订单编号,可以再第一张订单信息表中获取到相应的客户id,通过客户id即可以在第三张表中查询到客户信息了:

因此有 TNT2 ----> order_num ----> cust_id-----> cust_name,依据之前的SELECT语句可以分条来查询:



现在可以把第一个查询变为第二个查询的子查询来做:



同理我们可以把三个查询语句嵌套到一条SQL语句中,嵌套的SQL语句由内向外计算,即最里面的SELECT语句计算出的结果给外一层的SELECT语句来用:



另外还可以将计算字段作为子查询, 如,我们需要计算出custem表中以个客户需要支付多少钱?先用一个SELECT找出该客户有哪些订单,再将这些订单的价钱加在一起:

先看cust_id = 10001的订单 20005,20009相加的情况:



SUM()函数是进行列相加,正好可以把total当成一列来使用,进行求和, IN(20005,20009)转换为SELECT语句就比较简单了:



下面语句是计算每一个客户所需要支付的总金额,是对以上SQL语句的进一步改进,一次求出所有的客户的应付金额:



Mysql子查询语句(外键调用主键)

子查询分类

子查询按返回结果集的不同分为4种:表子查询,行子查询,列子查询和标量子查询。

表子查询:返回的结果集是一个表集合,N行N列(N>=1)。表子查询经常用于父查询的FROM子句中。
行子查询:返回的结果集是一个表集合,一行N列(N>=1)。行子查询可以用于福查询的FROM子句和WHERE子句中。
列子查询:返回的结果集是一个表集合,N行一列(N>=1)。
标量子查询:返回的结果集是一个表集合,一行一列,也就是一个标量值。可以指定一个标量表达式的任何地方,都可以用一个标量子查询。
表子查询
SELECT studentNO , studentNAME
FROM (SELECT studentNO,sex,studentNAME
FROM student
WHERE age > 18) AS student18
WHERE sex='M'
如:行子查询

SELECT studentNO
FROM student
WHERE (sex,age) = (SELECT sex,age
FROM student
WHERE studentNO = 15
)

标量查询:
SELECT studentNO
FROM student
WHERE sex = (SELECT sex
FROM student
WHERE studentNO = 15
)
 

mysql 子查询问题

a
id time
1 324523
2 234324
b
id aid time
1 2 234
2 2 5435
3 1 34543
4 1 32543

select * from (select b.* from b
join a on b.id = a.id and b.time < a.time
order by b.aid, b.time desc ) as c group by c.aid ;
 

www.htsjk.Com true http://www.htsjk.com/shujukunews/2170.html NewsArticle MySQL子查询,MySQL子 到目前为止我们所看到的SELECT语句都是简单查询,即从单个数据库表中检索数据的单条语句。SQL还允许创建子查询,即嵌套在其他查询语句中的查询。 下面给出嵌套...
评论暂时关闭