#mysql #select #find-in-set
#mysql #выберите #find-in-set
Вопрос:
Моя структура базы данных выглядит следующим образом: Имя базы данных: Продукты
id ptype
1 Cups
2 Shirts
3 Cups
4 Mugs
5 Fabric
6 Mat
Имя базы данных: Категории
id category ptype
1 Clothes Pants, Shirts, Tshirts
2 Other Mugs, Cups
Я хочу получить список различных типов ptype (таблица продуктов), которые еще не перечислены в таблице ptype категорий
Таким образом, результат будет
ptype
Fabric
Mat
Я попытался использовать следующий запрос mysql select, но, похоже, он не работает
SELECT p.ptype, c.ptype, FIND_IN_SET(p.ptype,c.ptype) FROM products as p, categories as c WHERE FIND_IN_SET(p.ptype,c.ptype) < 1
Он возвращает значение FIND_IN_SET как 0 для всех ptypes таблицы products .
Комментарии:
1. Есть ли у вас пробелы после запятых в поле ptype таблицы categories?
2. Спасибо, что указали, да, у меня есть пробелы после запятых, которых там не должно быть. И удаление этого тоже решает проблему. Опубликуйте это в ответах, и я приму это как решение вопроса. Еще раз спасибо
Ответ №1:
Удалите пробелы после запятых в categories.ptype
поле, чтобы запрос работал. find_in_set() сравнивает указатель со списком значений, разделенных запятыми, и считает пробел после запятой частью строк, которые он ищет, поэтому совпадение не найдено, если вы ищете строку, которая не содержит пробелов.