1

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

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 显示项目???例如,如果我想在提交 nav id 2 时显示所有项目(nav a、nav e)?

4

3 回答 3

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'

但第一个是很多击球手。

于 2012-05-16T17:37:39.690 回答
1

假设 X 是您想要的导航 id,因此您可能想要使用以下查询:

SELECT title FROM table WHERE nav REGEXP '([0-9]+,)*X(,[0-9]+)*';
于 2012-05-16T17:44:44.587 回答
0

如果导航列的值范围从 0 到 9 即单个数字,如您的示例中所示,那么您可以安全地使用以下内容:

select * from table where nav like '%2%'

如果您的值大于 9,即 10 以后,并且数据可以是 2、5、10、123,那么您将需要创建一个存储过程并将查询值作为参数传递给它。然后,该 SP 将创建一个游标并循环遍历结果集,并使用字符串函数检查数字是否存在,如果找到则返回该行作为结果。

另一种方法是在 PHP 结果对象中获取结果,然后遍历结果行并检查参数值是否存在。但是,如果表中有几行,那么 SP 方式会更好、更有效。

于 2012-05-16T17:31:58.470 回答