我尝试获取包含值2的所有行。
$query = "SELECT * FROM my_table WHERE categories LIKE '2'";
$rows = mysql_query($query);
如果列只有值2而不是1,2,3或2,12,则返回行。我如何获得包括值2的所有行?
答案 0 :(得分:0)
您可以使用以下任一项:
%
是一个通配符,因此它会匹配2
或1,2
等。2
两侧的任何内容。问题是它可以匹配21,22等。
$query = "SELECT * FROM my_table WHERE categories LIKE '%2%'";
相反,您应该考虑find_in_set mysql函数,该函数需要以逗号分隔的值列表。
$query = "SELECT * FROM my_table WHERE find_in_set('2', `categories`)";
答案 1 :(得分:0)
就像@jitendrapurohut所说,你可以用
来做$query = "SELECT * FROM my_table WHERE categories LIKE '%2%'";
$rows = mysql_query($query);
但是存储这样的集合真的很糟糕。更好的方法如下:
然后使用此查询:
SELECT *
FROM my_table m
INNER JOIN categories_my_table cm ON m.id_m = cm.id_m
INNER JOIN categories c ON cm.id_c = c.id_c
WHERE
c.id_c = 2;
编辑: @ e4c5链接解释了为什么存储这样的集合是不好的......
答案 2 :(得分:-1)
SELECT * FROM my_table WHERE categories LIKE '%2%' AND categories!='1,2,3' AND categories!='2,12';