Поиск Mysql в объединенной строке

Это стол:

CREATE TABLE n_dummy (
  id int(10) unsigned NOT NULL AUTO_INCREMENT,
  `values` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM;

INSERT INTO `n_dummy` (id, `values`) VALUES
(2, '2,10'),
(10, '2,10')
(3,  '7,3');

Выглядите так:

id | values
-----------
2  | 2,10
10 | 2,10
3  | 7,3

Скрипка включена.

Первый столбец — это целое число, которое нужно найти в строке из столбца values.

Примечание: пример слишком упрощен и выглядит глупо. Рефакторинг структуры таблиц — не выход. Только sql запрос со стандартными функциями и процедурами.

Я хочу найти целочисленное значение в строке, объединенной из целых чисел с разделителем ,.

Я ожидаю, что MySQL сделает это с оператором IN: SELECT id FROM n_dummy WHERE id IN(values);

И результат будет 2, 10 и 3. Но MySQL возвращает только 2, второе и другие значения недоступны для поиска с оператором IN со строкой.

Как искать целое число в объединенной строке, используя процедуры sql-запроса и предварительной сборки?


person userlond    schedule 14.09.2016    source источник
comment
делаем это в реляционной базе данных, looks stupid; согласовано.   -  person Ejaz    schedule 14.09.2016
comment
Вопрос является слишком упрощенной версией очень большого запроса (%), который состоит из огромного количества подзапросов, поэтому фактические таблицы создаются динамически, а не с помощью оператора вставки.   -  person userlond    schedule 14.09.2016
comment
Основная цель вопроса для меня - узнать, как найти целое число в динамически созданной конкатенации с разделительной строкой (она формируется с помощью функции CONCAT_WS и многих операторов CASE, а не простого sql-запроса)   -  person userlond    schedule 14.09.2016
comment
Кажется, sqlfiddle не работает для меня   -  person Ejaz    schedule 14.09.2016
comment
Некоторые проблемы со стабильностью Sqlfiddle...   -  person userlond    schedule 14.09.2016
comment
Извините, совершенно неправильный дизайн. В столбцах значения, разделенные запятыми, не хранятся.   -  person e4c5    schedule 14.09.2016
comment
Значения на самом деле не сохраняются, они формируются динамически на основе сложных условий случая. Плохой дизайн, ладно, пусть будет так :)   -  person userlond    schedule 14.09.2016


Ответы (1)


попробуй этого брата

SELECT * FROM `n_dummy` WHERE concat(',',`values`,',') LIKE concat('%',',',`id`,',','%')
person Beginner    schedule 14.09.2016