Выбор уникальных значений по условию?

usergeyv

Знаток
Регистрация
5 Июл 2013
Сообщения
152
Реакции
25
Например таблица post:
id - IN
title - строка
xfields - строка
Код:
id  title       xfields                                                                       

1  Назв1       god|2020||zhanr-n-filmy|комедия||id-kinopoisk|1111||name|фильм+1
2  Назв2       god|2020||zhanr-n-filmy|комедия||id-kinopoisk|1111||name|фильм=1
3  Назв3       god|2020||zhanr-n-filmy|комедия||id-kinopoisk|1112||name|филь+м2
4  Назв4       god|2020||zhanr-n-filmy|комедия||id-kinopoisk|1113||name|филь=м3
5  Назв5       god|2020||zhanr-n-filmy|комедия||name|фильм4


Делаю запрос:
Код:
SELECT id FROM post  WHERE xfields LIKE '%id-kinopoisk%'
Результат:
id - 1,2,3,4
Как сделать, чтобы id-kinopoisk|уникальное значения, то есть выбралось без повторов "1111" ?
Нужно получить результат:
id - 1 или 2 и 3,4
 
Последнее редактирование:

CAPAXA

Хранитель порядка
Регистрация
7 Июн 2007
Сообщения
1.151
Реакции
706

usergeyv

Знаток
Регистрация
5 Июл 2013
Сообщения
152
Реакции
25
Не до конца понятны критерии. В выборке постоянно будет четыре варианта?
мне нужно получить все ID чтобы не совпадала в строке значения id-kinopoisk после разделителя |

Кажется, нашел решения:

для понимания, запрос c дублями
Код:
SELECT p.id, regexp_substr (p.xfields, 'id-kinopoisk[^a-z]*')  AS id_kinopoisk FROM post  p WHERE  p.xfields LIKE '%id-kinopoisk%'
дает результат
Код:
array(2) {
  ["id"]=>
string(1) "1"
  ["id_kinopoisk"]=>
  string(22) "id-kinopoisk|1111||"
}
array(2) {
  ["id"]=>
string(1) "2"
  ["id_kinopoisk"]=>
  string(22) "id-kinopoisk|1111||"
}
array(2) {
  ["id"]=>
string(1) "3"
  ["id_kinopoisk"]=>
  string(22) "id-kinopoisk|1112||"
}
array(2) {
  ["id"]=>
string(1) "4"
  ["id_kinopoisk"]=>
  string(22) "id-kinopoisk|1113||"
}
Чтобы убрать дубли, делаю запрос
Код:
SELECT p.id, regexp_substr (p.xfields, 'id-kinopoisk[^a-z]*')  AS id_kinopoisk FROM post  p WHERE  p.xfields LIKE '%id-kinopoisk%'  GROUP BY id_kinopoisk
Код:
array(2) {
  ["id"]=>
string(1) "1"
  ["id_kinopoisk"]=>
  string(22) "id-kinopoisk|1111||"
}
array(2) {
  ["id"]=>
string(1) "3"
  ["id_kinopoisk"]=>
  string(22) "id-kinopoisk|1112||"
}
array(2) {
  ["id"]=>
string(1) "4"
  ["id_kinopoisk"]=>
  string(22) "id-kinopoisk|1113||"
}
Сейчас играюсь с регуляркой regexp_substr (p.xfields, 'id-kinopoisk[^a-z]*'), не получается получить только, например ["id_kinopoisk"]=>"1111", если кто поможет, буду благодарен
 
Последнее редактирование:
Сверху