INSERT into table VALUES 值为多个select查询结果

本文详细介绍了一种用于分析不同平台亏损比率的方法,通过创建一个包含多个亏损级别的数据表,并利用SQL语句从adk_profit_loss_new表中抽取数据,以此来统计各平台在不同亏损区间内的记录数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

新建表

CREATE TABLE `platform_loss_ratio` (
  `platform` varchar(32) NOT NULL COMMENT '平台名称',
  `platform_jc` varchar(10) NOT NULL COMMENT '平台简称',
  `level0` int(11) DEFAULT NULL COMMENT '亏损0-10000',
  `level1` int(11) DEFAULT NULL COMMENT '亏损10001-50000',
  `level2` int(11) DEFAULT NULL COMMENT '亏损50001-100000',
  `level3` int(11) DEFAULT NULL COMMENT '亏损100001-500000',
  `level4` int(11) DEFAULT NULL COMMENT '亏损500001-1000000',
  `level5` int(11) DEFAULT NULL COMMENT '亏损1000001-3000000',
  `level6` int(11) DEFAULT NULL COMMENT '亏损3000001-5000000',
  `level7` int(11) DEFAULT NULL COMMENT '亏损5000001-10000000',
  `level8` int(11) DEFAULT NULL COMMENT '亏损大于10000000'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

插入数据

INSERT into platform_loss_ratio VALUES('安克','ak',
(SELECT count(*) FROM adk_profit_loss_new t where  t.profit_loss<0 and  t.profit_loss >=-10000),
(SELECT count(*) FROM adk_profit_loss_new t where  t.profit_loss<-10000 and  t.profit_loss >=-50000),
(SELECT count(*) FROM adk_profit_loss_new t where  t.profit_loss<-50000 and  t.profit_loss >=-100000),
(SELECT count(*) FROM adk_profit_loss_new t where  t.profit_loss<-100000 and  t.profit_loss >=-500000),
(SELECT count(*) FROM adk_profit_loss_new t where  t.profit_loss<-500000 and  t.profit_loss >=-1000000),
(SELECT count(*) FROM adk_profit_loss_new t where  t.profit_loss<-1000000 and  t.profit_loss >=-3000000),
(SELECT count(*) FROM adk_profit_loss_new t where  t.profit_loss<-3000000 and  t.profit_loss >=-5000000),
(SELECT count(*) FROM adk_profit_loss_new t where  t.profit_loss<-5000000 and  t.profit_loss >=-10000000),
(SELECT count(*) FROM adk_profit_loss_new t where  t.profit_loss<-10000000))

 

### SQL 中 `INSERT INTO` 结合 `VALUES` 和 `SELECT` 语句的使用 SQL 提供了多种方式来向表中插入数据,其中包括直接提供的 `INSERT INTO ... VALUES` 语法,以及从其他表中选择数据并插入的 `INSERT INTO ... SELECT` 语法。这两种方式可以单独使用,也可以结合在一个语句集中进行多个插入操作。 #### 使用 `INSERT INTO ... VALUES` 当需要手动指定插入的具体时,可以使用 `INSERT INTO ... VALUES` 语句。其基本语法如下: ```sql INSERT INTO table_name (column1, column2, ..., columnN) VALUES (value1, value2, ..., valueN); ``` 例如,向 `students` 表中插入一条记录[^3]: ```sql INSERT INTO students (name, age, gpa) VALUES ('fred flintstone', 35, 1.28); ``` 该语句适用于一次性插入少量固定的数据行。 #### 使用 `INSERT INTO ... SELECT` 如果需要将一个表中的数据复制到另一个已存在的表中,可以使用 `INSERT INTO ... SELECT` 语句。其语法如下: ```sql INSERT INTO target_table (column1, column2, ..., columnN) SELECT column1, column2, ..., columnN FROM source_table; ``` 这种方式允许从源表中提取符合条件的数据,并将其插入目标表中。例如,从 `employees` 表中选取部门编号为 5 的员工信息插入到 `employee_archive` 表中[^2]: ```sql INSERT INTO employee_archive (emp_id, name, position, department) SELECT emp_id, name, position, department FROM employees WHERE department = 5; ``` 此方法特别适合批量迁移或归档数据的操作。 #### 在单条语句中插入多条记录 除了单条插入之外,还可以在 `VALUES` 子句中一次插入多行数据。例如: ```sql INSERT INTO students (name, age, gpa) VALUES ('fred flintstone', 35, 1.28), ('barney rubble', 32, 2.32); ``` 这种方式提高了插入效率,尤其在需要插入大量静态数据时非常有用[^3]。 #### 同时执行多个插入操作 Flink SQL 等系统支持通过 `STATEMENT SET` 来执行多个插入操作,允许在一个语句集中插入多个表或多次插入同一张表。其语法如下: ```sql EXECUTE STATEMENT SET BEGIN insert_statement; ... insert_statement; END; ``` 例如: ```sql CREATE TABLE students (name STRING, age INT, gpa DECIMAL(3, 2)) WITH (...); EXECUTE STATEMENT SET BEGIN INSERT INTO students (name, age, gpa) VALUES ('fred flintstone', 35, 1.28), ('barney rubble', 32, 2.32); INSERT INTO students (name, age, gpa) SELECT name, age, gpa FROM another_table; END; ``` 这种机制使得可以在一个事务中完成多个插入动作,简化了复杂数据流的处理流程[^3]。 --- ###
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值