Por meio de uma instrução SQL, como inserir os dados de uma tabela em outra tabela

     

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:

 

Acho que você gosta

Origin blog.csdn.net/u012660464/article/details/114014022
Recomendado
Clasificación