@cloneforse

Как вывести все поля из БД без повторов?

Добрый день.
Имеется таблица с такими значениями:
| id | name |
1 | Стивен Лэнг, Уильям Сэдлер
2 | Гай Ричи
3 | Стивен Кинг, Стивен Лэнг
---------------------------------------------
Не могу понять, как вывести все имена с таблицы без повторений.
К примеру из этой таблицы должны вывестись:
Стивен Лэнг
Уильям Сэдлер
Гай Ричи
Стивен Кинг
------------------------------------------
Спасибо за ранее
  • Вопрос задан
  • 954 просмотра
Решения вопроса 1
@londhor
фильтровать на бекенде, после выгрузки из базы.

А вообще, вопрос: Почему у вас в к уникальному id может быть вписано несколько имен?
У вас проблема в архитектуре БД, отсюда и возник ваш вопрос.

Вам нужно в БД каждому автору присвоить уникальный ID, и к посту (как бы это у вас не называлось), присвоить массив ID авторов, вместо текста напрямую.

Отвечая на сам вопрос:
1. Получить все записи.
2. Пройтись по массиву записей, и запихивать в новый массив только те строки, в которых нет повторений имени. Сами строки нужно через запетую разбить на массивы, чтобы можно было чекнуть уникальность авторов
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
trapwalker
@trapwalker
Программист, энтузиаст
Или так, если постгрес:
WITH data AS (
  SELECT 1 AS id, 'Стивен Лэнг, Уильям Сэдлер' AS name UNION
  SELECT 2 AS id, 'Гай Ричи' AS name UNION
  SELECT 3 AS id, 'Стивен Кинг, Стивен Лэнг' AS name
)
SELECT DISTINCT unnest(regexp_split_to_array(name, ',\s*'))
FROM data
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы