Archive for the ‘MySQL’ Category
Selecionar registros duplicados no banco de dados
Para localizar linhas duplicadas no MySQL você pode utilizar Having.
Exemplo abaixo:
SELECT COUNT(*) AS contador, campo_desejado FROM tabela GROUP BY campo_desejado HAVING COUNT(*) > 1
Desta forma, a coluna campo_desejado trará o valor que está duplicado e a coluna contador trará a quantidade de vezes que o valor se repete.
Simples assim!
Alternativa para a função LAST_DAY do MySQL
No MySQL, existe a simpática função LAST_DAY(). Como o nome sugere, ela pega o last day, o último dia do mês, de acordo com a data passada por parâmetro.
Ela é ótima para isso; ela funciona; e funciona bem!
Mas há um pequeno detalhe: LAST_DAY() está disponível a partir do MySQL 4.1.1.
A maioria das pessoas que leem este post, nunca enfrentaram e nem nunca precisarão enfrentar este problema. Porém, existem alguns desbravadores (como eu), que já passaram por isso (ou vão passar), já precisaram pegar o último dia do mês (ou vão precisar), em um servidor precário, onde existia um MySQL inferior ao 4.1.1.
São nestas horas que se consegue mostrar a criatividade!
Criei então uma alternativa ao LAST_DAY(), que também funciona muito bem, só não é tão simples. Aprecie:
DAYOFMONTH(DATE_SUB(CONCAT(YEAR(dt_nascimento),'-',MONTH(DATE_ADD(dt_nascimento,INTERVAL 1 MONTH)),'-01'),INTERVAL 1 DAY))
Buscar registro anterior e próximo no MySQL
A necessidade é a seguinte: Preciso pegar o id anterior e o próximo id de certo registro em questão; necessário em um blog, por exemplo. Infelizmente não existem no MySQL as funções NEXT() e PREV()… Poderiam existir não é?
Mas, não existindo, me obrigou a pesquisar. Não encontrando nada de bom por aí, me obrigou a pensar e encontrei a solução, utilizando subquerys. Considerando que 2 é o id atual em questão, fica assim:
SELECT * FROM tabela WHERE id = 2 OR id = (SELECT MAX(id) FROM tabela WHERE id < 2) OR id = (SELECT MIN(id) FROM tabela WHERE id > 2)
No caso de serem ids sequenciais, o retorno seriam os dados cujo ids fossem 1, 2 e 3. Se por exemplo o id 3 tivesse sido excluído, o retorno então seria 1, 2 e 4… E assim por diante.
Foi útil para você?