-1

我有一个名为的表ad_categories,它的结构是这样的 在此处输入图像描述

我有另一个名为的表pub_categories,它的结构是这样的 在此处输入图像描述

两个表中的 id 都不同我需要选择id's of ad_categoriesWHERE 中的任何一个ad_categories.cid should be in pub_categories.cid OR any of ad_categories.scid should be in ad_categories.scid OR any of the ad_categories.tcid should be in pub_categories.tcid 我的 cid 列表最多 35 ,scid 最多 250 和 tcid 最多 600。如何实现这一点请帮助我..

cid 是主类别 scid 是子类别,tcid 是第三个子类别。ad_category 是广告商选择类别的地方,而 pub_catogries 是发布商选择类别的地方。我有最多 30 个子类别,最多 250 个类别,第三个类别最多 600 个。广告商和发布商都可以选择我尝试过的多个类别,方法是将 pub_categories cid、scid 和 tcid 按“,”展开,并使用类似条件搜索这样的值

(ad_cat.cid LIKE '%,1,%' OR ad_cat.cid LIKE '%,1') OR (ad_cat.cid LIKE '%,2,%' OR ad_cat.cid LIKE '%,2')  OR (ad_cat.scid LIKE '%,1,%' OR ad_cat.scid LIKE '%,1') OR (ad_cat.scid LIKE '%,2,%' OR ad_cat.scid LIKE '%,2') OR (ad_cat.scid LIKE '%,3,%' OR ad_cat.scid LIKE '%,3') OR (ad_cat.scid LIKE '%,4,%' OR ad_cat.scid LIKE '%,4') OR (ad_cat.scid LIKE '%,5,%' OR ad_cat.scid LIKE '%,5')   OR (ad_cat.tcid LIKE '%,1,%' OR ad_cat.tcid LIKE '%,1') OR (ad_cat.tcid LIKE '%,2,%' OR ad_cat.tcid LIKE '%,2') OR (ad_cat.tcid LIKE '%,3,%' OR ad_cat.tcid LIKE '%,3') OR (ad_cat.tcid LIKE '%,4,%' OR ad_cat.tcid LIKE '%,4') OR (ad_cat.tcid LIKE '%,5,%' OR ad_cat.tcid LIKE '%,5')
4

1 回答 1

0

对于以逗号分隔的列的匹配逗号分隔,您只有一种选择在查询中使用正则表达式。规则就像:

ad_categories.cid REGEXP '(^|,)(11|2|4)(,|$)'

或者

ad_categories.cid REGEXP '(^|,)(REPLACE(pub_categories.cid, ',', '|'))(,|$)'

希望这会有所帮助。

于 2013-11-09T09:43:57.840 回答