在写数据库作业的时候遇到的问题,在查阅百度后自己简单整理了一下
sql中把一个查询结果当作另一个表来查询可以理解查询结果为一个临时表
使用select语句查询结果集即可。
参考代码:
–1:将结果作为一个临时表,可以使用链接或者直接查询
SELECT * FROM(
SELECT SUM(NUM_QNTY4) AS sumNum, NUM_LINKID
FROM RW_STORE_QUNTY
GROUP BY NUM_LINKID
) AS A
举例:查询订单表OrderInfo中购买数量超过30的用户编号
SELECT UserId FROM --订单表中购买数量超过30的用户编号UserId
(
SELECT UserId
FROM OrderInfo-- OrderInfo 订单表
GROUP BY UserId HAVING SUM(Amount)>30
)AS T1 --查询结果作为临时表T1
–2:将上述查询结果作为子查询的方式
SELECT * FROM 表名
WHERE 字段名1 IN
(
SELECT 字段名1 FROM(
SELECT 字段名1 AS sumNum, NUM_LINKID
FROM RW_STORE_QUNTY
GROUP BY NUM_LINKID
)
)
–查询购买商品数量超过30的用户信息
–用户信息在UserInfo中,购买详情放在OrderInfo中,所以要将两个表关联起来
SELECT * FROM UserInfo–从UserInfo中根据ID提取用户的完整信息
WHERE UserId IN (
SELECT UserId FROM --得到订单表中购买数量超过30的用户编号UserId
(
SELECT UserId
FROM OrderInfo-- OrderInfo 订单表
GROUP BY UserId HAVING SUM(Amount)>30
)AS T1
)