SQL-запрос для извлечения строк, где значение присутствует в поле, разделенном запятыми

#mysql

#mysql

Вопрос:

для чего нужен запрос -> Как получить содержимое таблицы, столбец которой состоит из данных, разделенных запятыми, как проверить, присутствует ли это значение в этом coloumn, если оно присутствует, затем выберите этот идентификатор продукта

 id   productname  poduct_cat_id
1    abc          2,3,4
2    def          3,4
3    efg          1,2,5
 

Как проверить 3 в product_cat_id и получить название и идентификатор продукта

вывод: результат [id]=1 результат [productname]= abc

Комментарии:

1. Какова структура вашей таблицы? Можете ли вы также предоставить образцы данных и желаемый результат, пожалуйста?

2. Реализуйте реальные отношения » многие ко многим «, и вы не столкнетесь с этими нелепыми проблемами

3. привет, я обновил свой запрос, пожалуйста, помогите мне ..!!!

Ответ №1:

Я согласен с комментарием Фила выше.

Для вашей таблицы вы можете использовать функцию FIND_IN_SET —

 SELECT * FROM table WHERE FIND_IN_SET(3, product_cat_id);
 

Ответ №2:

Если вы добавите в поле начальную и конечную запятую, вы можете использовать простое выражение like для выбора интересующих строк.

 SELECT * FROM table
WHERE CONCAT(',', product_cat_id, ',') LIKE '%,3,%'
 

Ответ №3:


Я думаю, функция FIND_IN_SET будет вашим другом здесь.

Ответ №4:

 select id, productname
from table
where product_cat_id like '%,3,%'
or product_cat_id like '3,%'
or product_cat_id like '%,3'
 

Ответ №5:

Если вы не рассматриваете возможность изменения структуры таблицы …:

Это неудачный запрос:

 SELECT `id`,`productname` 
FROM `place_table_name_here` 
WHERE `poduct_cat_id` LIKE '%3%';
 

но это даст вам ответ.

Комментарии:

1. это не сработает .. предположим, что product_cat_id = ‘12,13,14’, ваш запрос вернет эту строку, даже если она не содержит id 3