Mysql 如果某个字段是另一个表中某个字段的子字符串,请从表中选择行
我试图理解为什么下面的查询不起作用 我的模式:Mysql 如果某个字段是另一个表中某个字段的子字符串,请从表中选择行,mysql,Mysql,我试图理解为什么下面的查询不起作用 我的模式: CREATE TABLE category (`id` int, `category_name` varchar(55)) ; CREATE TABLE product (`id` int, `name` varchar(55), `categories` varchar(50)) ; CREATE TABLE product_categories (`id` int, `product` int, `category`
CREATE TABLE category
(`id` int, `category_name` varchar(55))
;
CREATE TABLE product
(`id` int, `name` varchar(55), `categories` varchar(50))
;
CREATE TABLE product_categories
(`id` int, `product` int, `category` int)
;
INSERT INTO category
(`id`, `category_name`)
VALUES
(1, 'Home'),
(2, 'Design')
;
INSERT INTO product
(`id`, `name`, `categories`)
VALUES
(1, 'Magazine', 'Home/Design/Interior'),
(2, 'Book', 'Internet/Technology')
;
查询:
SELECT
category.id
FROM category
JOIN product
ON product.categories LIKE CONCAT('%' + category.category_name + '%')
您有:
SELECT
category.id
FROM category
JOIN product
ON product.categories LIKE CONCAT('%' + category.category_name + '%');
它应该是这样的:
SELECT *
FROM category
JOIN product
ON product.categories LIKE CONCAT('%', category.category_name, '%');
CONCAT()
是一个函数,函数的参数用逗号分隔,而不是用+
来分隔。对于每个具有匹配类别的产品,如何在product_categories表中插入行?对于id为1的产品,我希望在“product_categories”中有两行,其中product=1和category=1,以及product=1和category=1。Hmmm。。。为什么听起来像个新问题?:-)