MYSQL вопрос - получить уникальное значение - PullRequest
0 голосов
/ 02 ноября 2010

Допустим, у меня есть эти две переменные в MySQL

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

Как получить количество элементов, отображаемых в этих двух переменных?

Ответы [ 2 ]

0 голосов
/ 03 ноября 2010

Если вам действительно нужно сделать это на стороне MySQL, вы можете создать хранимую процедуру (или хранимую функцию), в которой:

  • создать временную таблицу (поскольку хранимые процедуры MySQL не могут обрабатывать массивы, поэтому вы должны использовать временную таблицу в качестве массива)
  • create WHILE цикл для анализа ваших строк с использованием функций LOCATE () , LEFT () и RIGHT () ( MySQL Manual: Строковые функции ) вставка каждого значения во временную таблицу
  • выполнить необходимый выбор (с пересечениями и т. Д.) Из этой временной таблицы

Но это решение действительно далеко не элегантно. Хранение тегов в отдельной таблице (как упоминалось выше, по одному тегу на строку) гораздо предпочтительнее.

0 голосов
/ 02 ноября 2010

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

Пример в 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}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...