id nav title content date
1 2,3 nav a askdajsdjasdasdfajsdfasd 12 june, 2012
2 2,40 nav e askdajsdjasdasdfajsdfasd 12 june, 2012
3 12,3,14 nav b askdajsdjasdasdfajsdfasd 12 june, 2012
4 3,4 nav c askdajsdjasdasdfajsdfasd 12 june, 2012
我的问题是,如何根据我提交的导航ID显示项目?例如,如果我想在提交导航ID 2时显示所有项目(nav a,nav e)?
答案 0 :(得分:2)
SELECT * FROM TABLE_NAME WHERE FIND_IN_SET(2,nav)
或
SELECT *
FROM Table
WHERE nav LIKE '2,%'
OR nav LIKE '%,2'
OR nav LIKE '%,2,%'
OR nav = '2'
但是第一个很重要。
答案 1 :(得分:1)
假设X是您想要的导航ID,因此您可能想要使用此查询:
SELECT title FROM table WHERE nav REGEXP '([0-9]+,)*X(,[0-9]+)*';
答案 2 :(得分:0)
如果导航列的值范围为0到9,即您的示例中显示的单个数字,则可以安全地使用以下内容:
select * from table where nav like '%2%'
如果您的值大于9,即10以后,数据可以是2,5,10,123,那么您将需要创建一个存储过程并将查询值作为参数传递给它。然后,此SP将创建一个游标并循环遍历结果集,并使用字符串函数检查数字是否存在,如果找到则返回行结果。
另一种方法是将结果放在PHP结果对象中,然后遍历结果行并检查参数值是否存在。但是,如果表中有多行,则SP方式更好,更有效。