[英]mysql searching text with search terms from second table
我在mysql中有两个表。
一个名为importcity的表具有6列文本。
agtrmks
: agtrmks
, agtrmks_2
, agtrmks_3
, pubrmrks
, pubrmrks_2
, pubrmrks_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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.