You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将嵌套SELECT查询结果创建为SQL中的新表?

解决方案

1. 完成统计查询(得到单行多列的统计结果)

你当前的思路是可行的——用标量子查询作为SELECT的列,每个子查询返回单个统计值,最终会生成一行包含所有统计字段的结果。只需按相同格式继续添加其他表的统计项即可:

SELECT 
  (SELECT COUNT(DISTINCT u.id) FROM Users u) AS totalUsers,
  (SELECT COUNT(DISTINCT c.id) FROM Categories c) AS totalCategories,
  (SELECT COUNT(DISTINCT o.id) FROM Orders o) AS totalOrders, -- 示例:新增订单表统计
  (SELECT COUNT(DISTINCT p.id) FROM Products p) AS totalProducts -- 示例:新增产品表统计

执行后会直接返回你想要的结果格式:

totalUsers  totalCategories  totalOrders  totalProducts
60          10               200          150

2. 将统计结果创建为新表

如果需要把统计结果持久化到新表中,不同SQL方言的实现略有差异,以下是通用方案:

方式一:一键创建表并插入数据(推荐)

使用CREATE TABLE ... AS SELECT语法,一步完成表结构创建和数据插入:

CREATE TABLE TableStatistics AS
SELECT 
  (SELECT COUNT(DISTINCT u.id) FROM Users u) AS totalUsers,
  (SELECT COUNT(DISTINCT c.id) FROM Categories c) AS totalCategories,
  (SELECT COUNT(DISTINCT o.id) FROM Orders o) AS totalOrders

方式二:先定义表结构,再插入数据

如果需要自定义字段数据类型(比如指定INT而非默认的BIGINT),可以拆分步骤:

-- 1. 创建空表
CREATE TABLE TableStatistics (
  totalUsers INT,
  totalCategories INT,
  totalOrders INT
);

-- 2. 插入统计结果
INSERT INTO TableStatistics
SELECT 
  (SELECT COUNT(DISTINCT u.id) FROM Users u),
  (SELECT COUNT(DISTINCT c.id) FROM Categories c),
  (SELECT COUNT(DISTINCT o.id) FROM Orders o);

补充说明

  • 如果表的id是主键(本身唯一),可以去掉DISTINCT,提升查询效率:COUNT(u.id)
  • SQL Server 不支持CREATE TABLE ... AS SELECT,需改用SELECT ... INTO语法:
SELECT 
  (SELECT COUNT(DISTINCT u.id) FROM Users u) AS totalUsers,
  (SELECT COUNT(DISTINCT c.id) FROM Categories c) AS totalCategories
INTO TableStatistics;

内容的提问来源于stack exchange,提问作者Sercan Noyan Germiyanoğlu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 10:45:36