[英]How to join 2 tables based on LIKE condition MySQL
我有两个表:
CREATE TABLE `category` (
`id` int(11) NOT NULL,
`name` varchar(50) NOT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `category` (`id`, `name`) VALUES
(1, 'HTML'),
(2, 'CSS'),
(3, 'Javascript'),
(4, 'Jquery'),
(5, 'PHP'),
;
CREATE TABLE `object` (
`id` int(11) NOT NULL,
`name` varchar(50) NOT NULL,
`category` varchar(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `object` (`id`, `name`, `category`) VALUES
(1, 'Object1', 'HTML, CSS'),
(2, 'Object2', 'PHP, Javascript, HTML')
(3, 'Object3', 'PHP, Javascript');
现在我要选择对象表中所有元素的类别都包含“ HTML”,那么我该怎么办? 感谢大伙们!
请尝试以下操作:使用类似运算符,从您的问题来看,我似乎不需要任何连接
select * from object
where category like '%HTML%'
从理论上讲,您应该能够使用ON
子句中的任何运算符来联接表
SELECT *
FROM `category` c
INNER JOIN `object` o ON o.category LIKE CONCAT('%', c.name, '%')
WHERE c.`name` = 'HTML'
不过,我建议您标准化数据并为多对多关系创建另一个category_object
表,如下所示:
CREATE TABLE `category_object` (
`categoryId` int(11) NOT NULL,
`objectId` int(11) NOT NULL,
FOREIGN KEY (categoryId)
REFERENCES product(id),
FOREIGN KEY (objectId)
REFERENCES object(id)
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.