quinta-feira, 15 de dezembro de 2011

Algumas funções do MySQL


Contar registros duplicados:


SELECT id_cliente, count(id_cliente) 
FROM  clientes 
GROUP BY id_cliente 
HAVING count( id_cliente) > 1


Mostrar conexões ativas:
SHOW PROCESSLIST;


Gerar sql para otimizar várias tabelas:
SELECT CONCAT('OPTIMIZE TABLE ',TABLE_NAME,'; ')AS tabela from information_schema.TABLES WHERE TABLE_SCHEMA = 'nome_do_bd’


Gerar sql para truncar várias tabelas:
SELECT concat('TRUNCATE ',TABLE_NAME,' ;') FROM information_schema.`TABLES` T WHERE TABLE_SCHEMA = 'nome_da_base'

Comando find_in_set, para quando precisar procurar um registro em uma lista de valores (similar ao IN(), mas passando uma string já formatada com as virgulas):

select id_cliente, Find_In_Set(id_cliente, '172,171,182,183') FROM clientes

Contar horas entre datas:
SELECT TIMEDIFF(STR_TO_DATE('19/01/2011 00:00:00', '%d/%m/%Y %H:%i:%s'),now());


Insert-update: 

REPLACE INTO acesso (login, ip, data_ultimo_acesso )VALUES ('login','192.168.0.1', now());