帮我写一个sql语句(mysql数据库) ,将原表的数据转换为目标表的数 原表表名为原表 目标表名为目标表 原表数结构 name 彭 张 李 sex 女 男 男 目标表结构 name 王 黄 sex 1 2
时间: 2024-05-15 19:14:26 浏览: 156
假设原表和目标表都已经创建,原表中的数据需要按照如下规则转换:
- 将“彭”改为“王”,将“张”改为“黄”;
- 将“女”改为“1”,将“男”改为“2”。
则可以使用如下 SQL 语句进行转换:
```sql
INSERT INTO 目标表 (name, sex)
SELECT
CASE
WHEN name = '彭' THEN '王'
WHEN name = '张' THEN '黄'
END AS name,
CASE
WHEN sex = '女' THEN 1
WHEN sex = '男' THEN 2
END AS sex
FROM 原表;
```
注意:在执行此语句之前,需要保证目标表中没有重复的数据,否则会出现插入重复数据的错误。如果目标表中已经有部分数据,而且这些数据与原表中的数据存在重复,可以使用 `INSERT IGNORE INTO` 语句来忽略重复数据的插入。
相关问题
postgresql将查询到的历史表的数据转移到正式表表sql拼接,具体sql展示
在PostgreSQL中,如果你想从历史表(通常是备份或者临时表)转移数据到正式的生产表,你可以使用INSERT INTO ... SELECT语句。这里是一个基本的SQL示例:
```sql
INSERT INTO production_table_name (column1, column2, ...) -- 官方表的列名列表
SELECT column1, column2, ... -- 从历史表中选择要迁移的列
FROM historical_table_name;
-- 如果需要考虑条件,例如只转移满足特定条件的数据
INSERT INTO production_table_name
SELECT * FROM historical_table_name
WHERE condition_column = 'some_value';
-- 如果需要忽略历史表中的某些行(如已存在或不需要的记录)
INSERT INTO production_table_name
SELECT * FROM historical_table_name
EXCEPT
SELECT * FROM production_table_name
WHERE condition_for_exclusion;
```
记得替换`production_table_name`、`historical_table_name`以及具体的列名和条件。执行前最好先创建目标表的所有列,如果有的列在旧表中有值但在新表中不存在,则可能会出现问题。
postgresql将查询到的多张历史表的数据转移到多张正式表表,具体sql展示
在PostgreSQL中,如果你想从多张历史表(如`history_table1`, `history_table2`, 等)合并数据并将其转移到多张正式表(如`final_table1`, `final_table2`),你可以使用`UNION ALL`、`JOIN`或者`INSERT INTO SELECT`等SQL语句。这里有一个简单的例子:
假设你想把`history_table1`和`history_table2`的某些列合并,并插入到`final_table1`,你可以这样做:
```sql
CREATE TABLE final_table1 AS
(
SELECT * FROM history_table1
UNION ALL
SELECT * FROM history_table2
);
-- 如果需要做更复杂的合并,比如基于某个条件选择数据,可以考虑JOIN
CREATE TABLE final_table2 AS
SELECT h1.column1, h1.column2, f.column3
FROM history_table1 h1
LEFT JOIN final_table2 f ON h1.common_column = f.common_column
WHERE h1.history_status = 'valid'; -- 这里假设有共同的'common_column'
-- 或者使用INSERT INTO ... SELECT来逐行转移数据,记得先创建目标表结构
CREATE TABLE final_table3 AS
BEGIN
INSERT INTO final_table3 (column1, column2)
SELECT column1, column2 FROM history_table1;
INSERT INTO final_table3 (column3)
SELECT column3 FROM history_table2;
END;
--
阅读全文