我在这里处理一些遗留数据库,我在编写搜索查询时遇到了一些麻烦.
有关的两个表是products和tours(每个产品多个).
我的一般查询如下所示:
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%',但是这将返回133并337为好.我需要使用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"错误..
我在这做错了什么?
您可以使用:
WHERE CONCAT("|",products.countries,"|") LIKE '%|33|%'
Run Code Online (Sandbox Code Playgroud)
请注意,管道在百分号内
| 归档时间: |
|
| 查看次数: |
747 次 |
| 最近记录: |