我的桌子看起来像这样

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/

10-11 05:17