/ / MYSQL питання - отримати унікальне значення - mysql, database, function, logic

MYSQL питання - отримати унікальне значення - mysql, database, function, logic

Скажімо, у мене є ці дві змінні в MySQL

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

Як отримати кількість елементів, які відображаються на цих двох змінних?

Відповіді:

0 для відповіді № 1

Якщо вам дійсно потрібно зробити це на MySQL стороні, ви можете створити збережену процедуру (або збережену функцію), в якій:

  • створити тимчасову таблицю (тому що збережені процедури MySQL не можуть обробляти масиви, тому ви повинні використовувати тимчасову таблицю як масив)
  • створити ЩО циклу, щоб розібрати ваші рядки, використовуючи LOCATE (), LEFT () і RIGHT () функції (Посібник 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}