/ / MYSQL question - get unique value - mysql, banco de dados, função, lógica

MYSQL pergunta - obter valor único - mysql, banco de dados, função, lógica

Vamos dizer que eu tenho essas duas variáveis ​​no MySQL

SET data1 = "1,2,3,apple,4,5";
SET data2 = "apple,orange,5";

Como faço para obter o número de itens que aparece nessas duas variáveis?

Respostas:

0 para resposta № 1

Se você realmente precisa fazer isso no MySQL, você pode criar um procedimento armazenado (ou função armazenada) no qual:

  • criar tabela temporária (porque as rotinas armazenadas do MySQL não podem manipular arrays, então você tem que usar tabela temporária como um array)
  • crio ENQUANTO ciclo para analisar suas cordas usando LOCALIZAR(), ESQUERDA() e CERTO() funções (Manual do MySQL: Funções String) inserindo todos os valores na tabela temporária
  • execute select necessário (com interseções e assim por diante) desta tabela temporária

Mas esta solução está longe de ser elegante. Armazenar tags em tabela separada (como mencionado acima, uma tag por linha) é muito mais preferível.


0 para resposta № 2

Não há como explodir a lista e contar os itens. A única maneira de explodi-lo em sua linguagem nativa manipulando o valor:

Exemplo em php:

$values = mysql_result();
echo count(explode(",", $values));

A outra maneira é colocar todas as tags em uma tabela separada e juntá-las em uma tabela dinâmica, então você pode fazer algo assim:

select
count(*)
from
items
join
pivot on pivot.item_id = items.id
join
tags on pivot.tag_id = tags.id
where
item.id = {itemid}