(编辑)的
表“公司”: 公司 - > “示例LTD” 类别(Varchar) - > “1,2,3,4”
当访客选择查看分类号为“1”的公司时,“示例LTD”应显示(也在2,3和4中)
我想SELECT * FROM公司WHERE类别(例如包含类别编号1) 任何的想法?
答案 0 :(得分:3)
SELECT * FROM companies WHERE categories IN (1,3,6,9)
您可以在php中动态生成IN列表:
$cats = join(',',$categories);
$sql = "SELECT * FROM companies WHERE id IN ($cats)";
但请确保您的$ categories数组没有污染(仅包含安全数据,以防止MySQL注入)!
您是否将类别存储在一个CSV字段中?哎哟!
好吧,如果用户只能选择一个类别,请使用FIND_IN_SET:
SELECT * FROM companies WHERE FIND_IN_SET(categories,1)
有多个类别,没有这样的事情。使用循环生成不同的FIND_IN_SET,以AND
分隔。
制表公司:
以及类别的链接表: