繁体   English   中英

mysql从第二个表中搜索带有搜索词的文本

[英]mysql searching text with search terms from second table

我在mysql中有两个表。

一个名为importcity的表具有6列文本。

agtrmksagtrmksagtrmks_2agtrmks_3pubrmrkspubrmrks_2pubrmrks_3

第二个表称为过滤器,具有搜索词。 我想从importcity删除与任何搜索词匹配的任何行。 我当时正在进行相关查询,但我无法弄清楚。 我也尝试连接列,但是我被困在where和like子句中。

如果要手动执行,则此SQL语句可以正常工作

`DELETE FROM `importcity_houston` where lower(concat(`agtrmks`,`agtrmks_2`,`agtrmks_3`,`pubrmrks`,`pubrmrks_2`,`pubrmrks_3`))   REGEXP '(auction.com|bank of america|fannie|fha|freddie|homepath|homesteps|hubzu|hud|short sale)'`  

但是我希望根据过滤器表中的术语动态创建正则表达式部分。

我不确定您要寻找什么。 我猜想您要在六个字段中的任何一个中搜索一堆搜索词。 可以使用IN来代替使用LIKE 它看起来像以下内容:

SELECT I.* 
FROM importcity_houston AS I
WHERE I.agtrmk IN ('FirstSearch', 'SecondSearch', 'ThirdSearch') OR
      I.agtrmks_2 IN ('FirstSearch', 'SecondSearch', 'ThirdSearch') OR
      I.agtrmks_3 IN ('FirstSearch', 'SecondSearch', 'ThirdSearch') OR
      I.pubrmrks IN ('FirstSearch', 'SecondSearch', 'ThirdSearch') OR
      I.pubrmrks_2 IN ('FirstSearch', 'SecondSearch', 'ThirdSearch') OR
      I.pubrmrks_3 IN ('FirstSearch', 'SecondSearch', 'ThirdSearch')

尝试这样的事情:

 DELETE from importcity
 WHERE agtrmks in (
   SELECT a.agtrmks 
   FROM (select i.agtrmks 
         FROM importcity i 
         cross join filter f on i.agtrmks = f.search_terms
         OR i.agtrmks_2 = f.search_terms 
         OR i.agtrmks_3 = f.search_terms 
         OR i.pubrmrks = f.search_terms 
         OR i.pubrmrks_2 = f.search_terms 
         OR i.pubrmrks_3 = f.search_terms 
        ) as a);

SQL小提琴

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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