Prefácio
Às vezes, geralmente temos este requisito: precisamos consultar os dados de certos campos em uma tabela de acordo com as condições e, em seguida, inseri-los em outra tabela. Esta é a transferência de dados entre tabelas.
Nesse cenário, geralmente é necessário sincronizar os dados históricos.
Suponha que as duas tabelas sejam A e B e que a estrutura da tabela seja diferente, mas alguns campos têm o mesmo significado.
Se houver menos dados, é melhor apenas inseri-los manualmente na tabela onde você precisa inserir os dados. Mas se houver milhares deles, o método manual definitivamente não é aceitável. Por favor, veja o exemplo abaixo, como conseguir através do sql.
1. Preparação de dados
1. Estrutura da tabela
1) Crie uma tabela de ajuda t_help
CREATE TABLE `t_help` (
`id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`user_id` int(10) DEFAULT NULL COMMENT '用户ID',
`problems` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '问题描述',
`create_date` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='帮助表';
2) Crie um formulário de resposta t_reply
CREATE TABLE `t_reply` (
`id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`help_id` int(10) NOT NULL COMMENT '帮助表_主键ID',
`problems` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '问题描述',
`reply` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '回复内容',
`create_date` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='回复表';
2. Tabela de dados
1) Insira os dados na tabela de ajuda t_help
Neste momento, os dados t_reply na tabela de resposta estão vazios e nenhum dado é inserido
2. Exigir
Desejo transferir os dados da tabela de ajuda t_help para a tabela de resposta t_reply. A relação correspondente entre os valores dos campos é a seguinte:
tabela t_help tabela t_reply
problemas -> problemas
id -> help_id
Hora atual -> create_date
Valor fixo -> resposta
Descrição:
Na tabela t_reply, o valor de resposta é inserido no texto fixo "conteúdo um padrão", o valor de create_date é inserido na hora atual e os campos restantes correspondem à tabela t_help.
Três, método de realização
1.SQL template
INSERT INTO `目标表`(各个字段)
(
SELECT
各个字段 或者 固定值
FROM
来源表
WHERE
条件
);
Descrição:
1) Primeiro, escreva a instrução de inserção da tabela de destino de acordo com o método normal de escrita.
2) Geralmente, o primeiro parêntese de fechamento) é seguido por valores, conforme mostrado abaixo
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....);
Aqui é seguido diretamente por um par de parênteses, e a instrução da consulta pode ser escrita entre parênteses.
3) A instrução de consulta grava a consulta da tabela de origem.
2. Implementação de SQL
INSERT INTO `t_reply`(help_id,problems,reply,create_date)
(
SELECT
id,
problems,
'默认一个内容',
NOW( )
FROM
t_help
WHERE
1 = 1
);
Aqui, se for um conteúdo de string fixo, envolva-o diretamente com aspas simples, se for a hora atual, apenas use a função NOW (). A instrução de consulta não precisa adicionar onde 1 = 1.
Ao executar a instrução acima, a transferência de dados da tabela t_help para a tabela t_reply é concluída ~
Neste momento, os dados da tabela t_reply não estão vazios e os dados da tabela são mostrados na seguinte figura: