MySQL Выберите поле как Distinct с типом данных как Text с фильтрацией

0

Если у нас есть таблица T1 с полем с указанными orders них есть тип данных как Text.

Например:

user:1|number:2|expiry:9/2018
user:3|number:2|expiry:9/2018
user:1|number:3|expiry:1/2020

И я хотел бы DISTINCT SELECT DISTINCT на основе number: и expiry:

Таким образом, ожидаемый результат будет следующим:

user:1|number:2|expiry:9/2018
user:1|number:3|expiry:1/2020

Как это сделать?

Теги:
distinct

1 ответ

0
Лучший ответ

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

На данный момент с существующей структурой вы можете использовать агрегацию для получения ожидаемых данных

select min(orders) orders
from table1
group by substring_index(orders,'|',-2)

http://rextester.com/GLT33046

  • 0
    Можете ли вы объяснить для меня, что означает substring_index(orders,'|',-2)
  • 0
    @MichaelLucas эта функция просто разбивает текст на разделитель, как | и последний аргумент, из которого нужно выбрать текст в вашем случае, я указал -2, чтобы выбрать текст после первой трубы или выбрать текст из второй последней трубы. Вы можете выполнить этот запрос, чтобы получить фактический вывод для функции select substring_index(orders,'|',-2) from table1

Ещё вопросы

Сообщество Overcoder
Наверх
Меню