Если у нас есть таблица 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
Как это сделать?
Вы должны подумать о том, чтобы реструктурировать свои данные и сохранить эти данные в отдельных столбцах или в другой таблице и в разных столбцах, чтобы избежать таких структурных проблем.
На данный момент с существующей структурой вы можете использовать агрегацию для получения ожидаемых данных
select min(orders) orders
from table1
group by substring_index(orders,'|',-2)
substring_index(orders,'|',-2)
|
и последний аргумент, из которого нужно выбрать текст в вашем случае, я указал -2, чтобы выбрать текст после первой трубы или выбрать текст из второй последней трубы. Вы можете выполнить этот запрос, чтобы получить фактический вывод для функцииselect substring_index(orders,'|',-2) from table1