根据提交的ID显示多个项目?

时间:2012-05-16 17:29:06

标签: php mysql select

希望有人可以帮助我。我的数据库中有以下结构。

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)?

3 个答案:

答案 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方式更好,更有效。