繁体   English   中英

如何基于LIKE条件联接2个表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM