/ / MYSQL въпрос - получите уникална стойност - mysql, база данни, функция, логика

MYSQL въпрос - получи уникална стойност - mysql, база данни, функция, логика

Да кажем, че имам тези две променливи в MySQL

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

Как мога да получа броя елементи, които се показват на тези две променливи?

Отговори:

0 за отговор № 1

Ако наистина трябва да направите това в MySQL, можете да създадете съхранена процедура (или съхранена функция), в която:

  • създайте временна таблица (защото съхраняваните рутини на MySQL не могат да се справят с масиви, така че трябва да използвате временната таблица като масив)
  • създавам ДОКАТО за да анализирате струните си LOCATE (), НАЛЯВО() и НАДЯСНО () функции (Ръководство на MySQL: Струнни функции), вмъквайки всяка стойност в временната таблица
  • изпълнете необходимото избиране (с кръстовища и т.н.) от тази временна таблица

Но това решение е далеч от елегантен. Съхраняването на маркери в отделна таблица (както е споменато по-горе, един маркер на ред) е много по-за предпочитане.


0 за отговор № 2

Няма начин да се взриви списъкът и да се броят елементите. Единственият начин да го взриви в родния си език, манипулиращ стойността:

Пример в php:

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

Другият начин е да поставите всички тагове в отделна таблица и да ги свържете в конфигурационна маса, след което можете да направите нещо подобно:

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