Выборка из MySQL без повторений хотя бы одного значения

406
11 января 2017, 04:02

Доброго времени суток, друзья. Есть необходимость вывести из БД значения из определенного столбика. Однако сделать это нужно таким образом, чтобы в выборке не было дублей значений.

Сейчас вывожу таким запросом:

"SELECT * FROM questions GROUP BY tags ORDER BY views DESC LIMIT 50"

То есть я вывожу уникальные значения со столбика tags. И все бы ничего, но в этом столбике прописывается что-то вроде этого "метка 1, метка 2, метка 3" (С помощью PHP я разбиваю эту строку на 3 разных слова, но сейчас не об этом). Проблема в том, что некоторые значения совпадают в разных строках, например "метка 4, метка 2, метка 6", "метка 18, метка 3, метка 10" и т.д. Собственно, нужно сделать выборку таким образом, чтобы совпадения из разных строк не попадали в выборку, как-то так...

То есть если "метка 2" уже попала в выборку, то пусть из значения "метка 4, метка 2, метка 8" попадают в выборку только "метка 4, метка 8"

Answer 1

Единственный правильный вариант - привести в порядок данные, сейчас это никуда не годится. Вам нужны две таблицы, сначала таблица тегов:

id int primary key, title varchar(255)
-- возможно какие-то ещё данные (id юзера, который добавил тег, 
-- время создания и т.д.)

И таблица тегов вопросов:

id int primary key, question_id int (index), tag_id int (index)
READ ALSO
Как в php строку умножить на число?

Как в php строку умножить на число?

К примеру хочу строку "aaa" умножить на число 3, чтобы было "aaaaaaaaa"

532