2010-12-27 5 views
0

У меня есть столбец в моей таблице, где я хранить значения, разделенные запятыми,Как получить уникальные значения из поля значений, разделенных запятой?

Сейчас я нахожусь в необходимости составления списка всех уникальных значений из этого поля/колонки ..

Как может я сделай это?

Я использую PHP ..

+2

Ну, если вы хотите показать уникальные значения, вам может быть лучше не хранить ваши данные как значения, разделенные запятой :) Во всяком случае, какой язык вы используете для своей бизнес-логики? Это может быть проще сделать в коде php/java/.... –

+0

Теперь вы знаете, почему значения, разделенные запятыми, являются плохой идеей в СУБД. Начните сначала и нормализуйте свои данные. –

+0

Я не могу внести существенных изменений в старые данные. Поэтому я собираюсь извлечь уникальные значения с помощью array_unique и сохранить их в отдельной таблице в качестве тегов, а затем просто использовать текущую структуру таблицы так, как есть. Поэтому, когда Мне нужны уникальные значения, которые я могу получить непосредственно из таблицы тэгов, и когда добавляется что-то новое, я могу добавить их к ним, а также легко перечислить все теги frm для одного столбца. Это нормально? – Vijay

ответ

4

Noway с только MySQL, если вы используете PHP, то лучше всего, чтобы получить поле, а затем использовать PHP, чтобы получить ваши различные значения. explode() - хороший подход, и вы можете использовать array_unique для удаления повторяющихся значений.

http://us3.php.net/manual/en/function.array-unique.php

или

Вы можете нормализовать базу данных

+0

+1 за предложение нормализовать данные –

0

Сохранение нескольких (разделенных запятыми) значений в одном поле не является хорошим проектирование базы данных, вы должны хранить, что значения в другой таблице. В этом случае вы сможете использовать оператор GROUP BY SQL. В текущей ситуации вы должны выбрать все данные из таблицы, взорвать(), отсортировать их и удалить дубликаты, что займет гораздо больше времени.

0

Что, никто не хранит ключевые слова как данные, разделенные запятой в БД?

К сожалению, единственный способ быстро сделать это - написать скрипт php, чтобы взорвать значения и чем рассчитывать на различные значения в массиве.

Смежные вопросы