· 8 years ago · Feb 05, 2018, 01:44 AM
1CREATE TABLE USUARIOS (
2 NOME VARCHAR(50) NULL DEFAULT NULL,
3 EMAIL VARCHAR(50) NULL DEFAULT NULL,
4 ID_STATUS INT(11) NULL DEFAULT NULL
5) COLLATE='utf8_unicode_ci' ENGINE=InnoDB;
6
7INSERT INTO USUARIOS (NOME, EMAIL, ID_STATUS) VALUES ('João', 'joao@dominio.com.br', 0);
8INSERT INTO USUARIOS (NOME, EMAIL, ID_STATUS) VALUES ('João', 'joao@dominio.com.br', 1);
9INSERT INTO USUARIOS (NOME, EMAIL, ID_STATUS) VALUES ('João', 'joao@dominio.com.br', 0);
10INSERT INTO USUARIOS (NOME, EMAIL, ID_STATUS) VALUES ('João', 'joao@dominio.com.br', 0);
11INSERT INTO USUARIOS (NOME, EMAIL, ID_STATUS) VALUES ('Pedro', 'joao@dominio.com.br', 1);
12INSERT INTO USUARIOS (NOME, EMAIL, ID_STATUS) VALUES ('Pedro', 'joao@dominio.com.br', 0);
13INSERT INTO USUARIOS (NOME, EMAIL, ID_STATUS) VALUES ('Pedro', 'joao@dominio.com.br', 0);
14INSERT INTO USUARIOS (NOME, EMAIL, ID_STATUS) VALUES ('Ana', 'ana@dominio.com.br', 0);
15INSERT INTO USUARIOS (NOME, EMAIL, ID_STATUS) VALUES ('Ana', 'ana@dominio.com.br', 0);
16INSERT INTO USUARIOS (NOME, EMAIL, ID_STATUS) VALUES ('José', 'jose@dominio.com.br', 0);
17INSERT INTO USUARIOS (NOME, EMAIL, ID_STATUS) VALUES ('José', 'jose@dominio.com.br', 1);
18
19-- REMOVE A TABELA TEMPORARIA QUE SERA UTILIZADA NO PROCESSAMENTO, CASO EXISTIR
20DROP TABLE IF EXISTS USUARIOS_TEMP;
21
22-- CRIA UMA TABELA TEMPORARIA INSERINDO SOMENTE USUARIOS ATIVOS, NÃO DUPLICADOS
23CREATE TABLE USUARIOS_TEMP SELECT DISTINCT NOME, EMAIL, ID_STATUS FROM USUARIOS WHERE ID_STATUS = 1;
24
25-- INSER NA TABELA TEMPORARIA SOMENTE USUARIOS INATIVOS, NÃO DUPLICADOS (UTILIZA OS DADOS JA EXISTENTES COMO REFERENCIA PARA NAO INSERIR UM NOVO REGISTRO INATIVO DE UM USUARIO ATIVOS JA EXISTENTE)
26INSERT INTO USUARIOS_TEMP (NOME, EMAIL, ID_STATUS)
27 SELECT DISTINCT NOME, EMAIL, ID_STATUS FROM USUARIOS UO
28 WHERE ID_STATUS = 0
29 AND CONCAT(UO.NOME, UO.EMAIL) NOT IN (SELECT CONCAT(UA.NOME, UA.EMAIL) FROM USUARIOS_TEMP UA);
30
31-- LIMPA A TABELA DE USUARIOS UMA VEZ QUE DAS DUPLICACOES FORAM RESOLVIDAS
32TRUNCATE TABLE USUARIOS;
33
34-- POPULA A TABELA DE USUARIOS COM A LISTA DE USUARIOS PROCESSADA
35INSERT INTO USUARIOS (NOME, EMAIL, ID_STATUS) SELECT UT.NOME, UT.EMAIL, UT.ID_STATUS FROM USUARIOS_TEMP UT WHERE CONCAT(UT.NOME, UT.EMAIL) NOT IN (SELECT CONCAT(UF.NOME,UF.EMAIL) FROM USUARIOS UF);
36
37-- REMOVE A TABELA TEMPORARIA QUE SERA UTILIZADA NO PROCESSAMENTO
38DROP TABLE IF EXISTS USUARIOS_TEMP;