mysql查询LIKE

时间:2015-03-09 11:02:19

标签: php mysql

我有这样的表:

+-------+-----------+
| name  |    ids    |
+-------+-----------+
| Artur |  1, 2, 3  |
+-------+-----------+
| David | 11, 22, 33|
+-------+-----------+

我有这样的SQL查询:

  SELECT * FROM table WHERE ids LIKE '%$id%'

例如$id=1;

我需要检索Artur行。代码可以工作,但在这种情况下($ id = 1),David的行也会被检索,因为他的ids包含变量$的值标识。

所以我需要像:SELECT * FROM table WHERE "some number of ids"=$id

这样的SQL

或者我必须使用LIKE的aproach和其他一些条件?

提前感谢您的关注

3 个答案:

答案 0 :(得分:3)

您可以使用find_in_set()

select * FROM table WHERE find_in_set('1',ids) > 0  ;

请注意,您正在进行糟糕的数据库设计,并且将来可能会遇到很多问题。您永远不应该存储以逗号分隔的数据。所以第一步就是进行标准化。

答案 1 :(得分:2)

使用find_in_set

SELECT * FROM table WHERE find_in_set($id, ids)

但规范化你的桌子要好得多。

答案 2 :(得分:1)

使用mysql FIND_IN_SET

SELECT * FROM table WHERE FIND_IN_SET($id, ids)

LIKE

SELECT * FROM table WHERE CONCAT(', ', ids, ', ') LIKE '%, $id ,'

但两者都不推荐。你应该normalize your database