Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > Выборка по id хранящимся в строке


Автор: Aver78 1.9.2018, 12:10
Таблица A
  id      value
  1        a1
  2        a2
  3        a3
  4        a4
  5        a5 

Таблица B
   id      value(varchar)
   1       1:2:5


Код

SELECT
  *
FROM A
WHERE id IN ((
  SELECT
      REPLACE(value, ":", ",") ) AS x
FROM B
WHERE id = 1 
  ) )


Я понимаю что результат подзапроса воспринимается как "1,2,5"  а не 1,2,5 но не могу понять как это победить.

Желающих отправить меня делать это на серверном языке и отправлять 2-ой запрос, сразу отправляю лесом.

Автор: Akina 1.9.2018, 18:09
FIND_IN_SET()

Автор: Aver78 1.9.2018, 18:23
MAKE_SET()

Автор: Akina 3.9.2018, 07:50
А при чём тут MAKE_SET() ???

Автор: Aver78 3.9.2018, 09:42
Я думал мы играем в перечесление строковых функций MySQL.  А я, наверное, просто ответа не понял. Вот если бы ты любезно пояснил что мне с ней делать...

Автор: Akina 3.9.2018, 14:48
Цитата(Aver78 @  3.9.2018,  10:42 Найти цитируемый пост)
Я думал мы играем в перечесление строковых функций MySQL.
 smile 
Цитата(Aver78 @  3.9.2018,  10:42 Найти цитируемый пост)
что мне с ней делать
Код

SELECT A.*
FROM A, B
WHERE B.id = 1 
  AND FIND_IN_SET(A.id, REPLACE(B.value, ":", ",")) 





Автор: Aver78 3.9.2018, 15:46
Теперь стала ясна мысль. Я, как то даже, не подумал о таком использовании FIND_IN_SET. 
Вери сенкс.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)