MySQL在选择时连接到列

Jer*_*iko 2 mysql

我在这里处理一些遗留数据库,我在编写搜索查询时遇到了一些麻烦.

有关的两个表是productstours(每个产品多个).

我的一般查询如下所示:

SELECT products.*, tours.* FROM products INNER JOIN tours 
ON products.id=tours.product_id
GROUP BY products.id
Run Code Online (Sandbox Code Playgroud)

现在这是我遇到麻烦的部分.该products表包含一个列,countries它是国家ID的管道分隔列表,如下所示:13|45|33|29|133|337.我需要返回一个列表products,例如国家/地区33.

为简单起见,我能做到where products.countries LIKE '%33%',但是这将返回133337为好.我需要使用where products.countries LIKE '%|33|%',但如果它们是第一个或最后一个,它将无法匹配.因此,我需要在选择时将管道附加到列值的任意一端,这样就会产生类似于:

SELECT products.*, tours.*, CONCAT("|",products.countries,"|") AS country_list
FROM products INNER JOIN tours ON products.id=tours.product_id
GROUP BY products.id
Run Code Online (Sandbox Code Playgroud)

但如果我尝试添加WHERE country_list LIKE '|%33%|',我会收到"undefined index: country_list"错误..

我在这做错了什么?

Sco*_*ers 5

您可以使用:

WHERE CONCAT("|",products.countries,"|") LIKE '%|33|%'
Run Code Online (Sandbox Code Playgroud)

请注意,管道在百分号内