如果它与另一个表行字符串匹配,则获取一个表行

时间:2019-09-11 06:58:50

标签: mysql sql

我试图从一个表中获取一行,该表与另一个表中的行匹配,而没有在单个查询中存储过程。这可能吗?让我用图形解释。假设我有两个表

  • tbl_paragraph
  • tbl_keywords

我正在尝试获取与所有关键字行匹配的所有段落行。

tbl_paragraph

enter image description here

tbl_keyword

enter image description here

在这里,当我尝试获取与“关键字表”关键字列匹配的段落时。结果将如下所示

enter image description here

尽管我尝试了sql

SELECT a.* 
FROM tbl_paragraph AS a 
INNER JOIN tbl_keywords b ON a.title LIKE '%b.keyword%'

但是它不起作用。

1 个答案:

答案 0 :(得分:1)

我实际上建议不要使用LIKE,它默认情况下不区分大小写:

REGEXP

SELECT a.* FROM tbl_paragraph a WHERE EXISTS (SELECT 1 FROM tbl_keywords b WHERE a.title REGEXP CONCAT('[[:<:]]', b.keyword, '[[:>:]]')); 相比,使用REGEXP而不是大小写敏感的问题的另一个优点是,前者可以让我们使用单词边界。在编写上述查询时,它仅将关键字LIKE作为一个独立词进行匹配。也就是说,它匹配weweed。这相当于在常规正则表达式中搜索we