sql插入语句insert into *** select * from

本文深入解析了一段复杂的SQL查询语句,该语句用于从多个表中抽取特定数据,包括销户柜员码、销户日期、账号等,并通过内连接进行数据整合。特别关注了交易对手信息的提取,以及在特定条件下的数据筛选。

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

INSERT INTO YJ_123456_12
	(TRANUS,/*1.销户柜员码*/
	TRANDT,/*2.销户日期*/
	ACCTNO,/*3.账号*/
	ACCTNA,/*户名*/
	CIT_CUST_NO,/*客户名*/
	TRAD_ADVS_CUST_NO,/*交易对手客户号*/
	TRAD_ADVS_ACCT_NO,/*交易对手账号*/
	TRAD_ADVS_ACCT_NAME,/*交易对手名称*/
	TRAD_ADVS_ORG_NO,/*交易对手机构号*/
	TRAD_ADVS_ORG_NAME/*交易对手奇偶股名称*/)
  SELECT   A.TRANUS,/*1.销户柜员码*/
		   B.ORG_NO,
		   A.TRANDT,
		   A.ACCTNO,/*3.账号*/
		   A.ACCTNA,/*户名*/
		   C.CIT_CUST_NO,/*客户号*/
		   C.TRAD_ADVS_CUST_NO,/*交易对手客户号*/
		   C.TRAD_ADVS_ACCT_NO,/*交易对手账号*/
		   C.TRAD_ADVS_ACCT_NAME,/*交易对手名称*/
		   C.TRAD_ADVS_ORG_NO,
		   C.TRAD_ADVS_ORG_NAME
FROM ODS_KN_KDB_OCAC A /*开销户登记簿*/
INNER JOIN ODS_CM_OGST_USER B /*柜员信息*/
	ON A.TRANUS = B.TELLER_NO
INNER JOIN ODS_TD_TRAD_BASE C /*交易基本信息表*/
	ON A.ACCTNO = C.TRAD_ACCT
	AND DATEDIFF(DATE(A.TRANDT), DATE(C.TRAD_DATE)) BETWEEN 0 AND 7 /*开销户日期 TRANDT;TRAD_DATE 交易日期*/
	AND C.TRAD_ADVS_CUST_NO IN
		(SELECT TRAD_ADVS_CUST_NO
			FROM ODS_TD_TRAD_BASE
			GROUP BY TRAD_ADVS_CUST_NO
			HAVING COUNT(DISTINCT TRAD ACCT) > 4)
WHERE DATEDIFF(SYSDATE, DATE(A.TRANDT)) <= 7
	AND A.OPACTG = '2'
	AND A.TRANUS <> ''
	AND A.TRANUS IN (SELECT TRANUS
						FROM ODS_KN_KDB_OCAC
						WHERE OPACTG = '2'
						AND TRANUS <> ''
						AND DATEDIFF(SYSDATE,DATE(TRANDT)) >=7
						GROUP BY TRANUS
						HAVING COUNT(DISTINCT ACCTNO) > 4
						)

### 如何正确编写 `INSERT INTO SELECT` SQL 语句 `INSERT INTO SELECT` 是一种用于将一个表中的数据复制到另一个表中的 SQL 语句。目标表中的现有记录不会受到影响,这意味着如果目标表中已经存在数据,新插入的数据会追加到现有数据之后[^3]。 以下是具体的语法和示例: #### 语法 1. 将一个表中的所有列复制到另一个表中: ```sql INSERT INTO table2 SELECT * FROM table1 WHERE condition; ``` 2. 仅将一个表中的某些列复制到另一个表中: ```sql INSERT INTO table2 (column1, column2, column3, ...) SELECT column1, column2, column3, ... FROM table1 WHERE condition; ``` #### 示例 假设我们有两个表:`employees` 和 `new_employees`。我们需要从 `employees` 表中选择特定的员工,并将他们的信息插入到 `new_employees` 表中。 ```sql -- 示例 1: 插入所有列的数据 INSERT INTO new_employees SELECT * FROM employees WHERE department = 'Sales'; -- 示例 2: 插入指定列的数据 INSERT INTO new_employees (id, name, position) SELECT id, name, position FROM employees WHERE department = 'Marketing'; ``` 在上述示例中: - 第一个查询将所有属于 "Sales" 部门的员工信息从 `employees` 表复制到 `new_employees` 表。 - 第二个查询仅选择 `id`、`name` 和 `position` 列的数据,并将其插入到 `new_employees` 表中[^3]。 #### 注意事项 - 确保 `table2`(目标表)已经存在,且其结构与 `SELECT` 查询返回的结果兼容。 - 如果目标表中有主键或唯一约束,确保插入的数据不会违反这些约束条件[^5]。 - 可以使用 `WHERE` 子来限制从源表中选择的数据[^3]。 #### 使用场景 `INSERT INTO SELECT` 通常用于以下场景: - 数据迁移:将数据从一个表迁移到另一个表。 - 数据备份:创建表的副本以进行备份。 - 数据整合:将多个表中的数据合并到一个表中[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值