我有一个保存在字符串中的类别列表。一个位于文章表上,另一个位于广告表上。我需要脚本返回两个表之间具有任何这些类别组合的所有行。
两个表上的类别字符串:
Civic,Community,Sports,Business
还有我的 MySQL 脚本
SELECT `Ad_ID`, `Ad_URL`, `Ad_Image`, `Ad_Type`, `Ad_Cities`, `Ad_Categories`
FROM `Ad_TABLE`
INNER JOIN `Article_TABLE` ON `Article_TABLE`.`Article_Cat` = `Ad_TABLE`.`Ad_Cat`
WHERE Article_TABLE.Article_Cat LIKE '%Civic%'
OR Article_TABLE.Article_Cat LIKE '%Community%'
OR Article_TABLE.Article_Cat LIKE '%Sports%'
OR Article_TABLE.Article_Cat LIKE '%Business%'
AND Ad_TABLE.Ad_Cat LIKE '%Civic%'
OR Ad_TABLE.Ad_Cat LIKE '%Community%'
OR Ad_TABLE.Ad_Cat LIKE '%Sports%'
OR Ad_TABLE.Ad_Cat LIKE '%Business%'
该脚本仅返回仅属于这些类别之一的记录,但有些记录属于多个类别,我也需要它返回这些记录。
如何才能找到两个表之间所有匹配类别的位置?
最佳答案
我怀疑您需要在 WHERE 子句中添加括号:
SELECT `Ad_ID`, `Ad_URL`, `Ad_Image`, `Ad_Type`, `Ad_Cities`, `Ad_Categories`
FROM `Ad_DB`
INNER JOIN `Article_DB` ON `Article_DB`.`Article_Cat` = `Ad_DB`.`Ad_Cat`
WHERE (Article_DB.Article_Cat LIKE '%Civic%'
OR Article_DB.Article_Cat LIKE '%Community%'
OR Article_DB.Article_Cat LIKE '%Sports%'
OR Article_DB.Article_Cat LIKE '%Business%')
AND (Ad.DB_Cat LIKE '%Civic%'
OR Ad.DB_Cat LIKE '%Community%'
OR Ad.DB_Cat LIKE '%Sports%'
OR Ad.DB_Cat LIKE '%Business%')
我不确定您的表的具体结构,但此查询将返回 Article_DB.Article_Cat
AND Ad.DB_Cat
包含您的某一类别的行。您可能需要重新考虑在这些表中存储数据的方式,以免重复数据。
关于MySQL - 需要在单个字符串中查找多个通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41189991/