我的桌子看起来像这样
id pname pfilter 1 onename 24, 36, 120 2 another 22, 124, 1 3 yet 120, 12, 124
I´m trying to run this query:
$filterrun = "24";
SELECT * FROM table WHERE pfilter LIKE '$filterrun'
在此示例中,我只希望显示ID#1。而不是ID#2和#3,因为它们包含pfilter 124。
如何才能做到这一点?
最佳答案
您的数据包含逗号分隔的列表。这为您提供了两种直接方法:
SELECT *
FROM table
WHERE concat(', ', $filterrun, ', ') like concat('%, ', pfilter, ', %');
或对echo_me的解决方案稍作改动:
SELECT *
FROM table
WHERE find_in_set($filterrun, replace(pfilter, ', ', ','));
否则,您必须开始处理空格。
但最终,您应该使用单独的关联/连接表。每个id和过滤器值将有一行。
关于php - MySQL查询逗号分隔过滤结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22453858/