Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在\u集合()中查找\u不适用于单个值_Mysql - Fatal编程技术网

Mysql 在\u集合()中查找\u不适用于单个值

Mysql 在\u集合()中查找\u不适用于单个值,mysql,Mysql,我有一个名为post的表,其中有一个名为visible\u user\u id的列,其中有逗号分隔的值。当我按相应的用户显示帖子时,我使用了FIND\u IN\u SET() e、 g.FIND_IN_SET('8','visible_user_id')当visible_user_id列包含逗号分隔的用户id时,它显示用户id 8的post表中的所有记录,例如 3,5,8 8,5 8,1,12 etc. 但当visible_user_ID列仅包含一个值(即8)时,它不会显示post表格记录 请

我有一个名为
post
的表,其中有一个名为
visible\u user\u id
的列,其中有逗号分隔的值。当我按相应的用户显示帖子时,我使用了
FIND\u IN\u SET()

e、 g.
FIND_IN_SET('8','visible_user_id')
当visible_user_id列包含逗号分隔的用户id时,它显示用户id 8的post表中的所有记录,例如

3,5,8
8,5
8,1,12
etc.
但当visible_user_ID列仅包含一个值(即8)时,它不会显示post表格记录


请提出解决办法。
FIND_IN_SET()
是否适用于单个值?

查询
选择FIND_IN_SET('8','8')
适用于我,并返回
1
作为结果集。你一定是做错了什么。除了@TimBiegeleisen comment,
选择FIND_In_SET('b','b')返回0。因此,您可能应该查找一个经过修剪的字符串,甚至最好删除任何尾随的逗号。@SarathChandra是的,我怀疑
visible\u user\u id
字符串不好并且存在格式问题。正如Drew所提到的,如果可以的话,您应该尽量使事情规范化。花费了这么多时间,我认为是时候规范化您的数据库了。此外,您还可以从索引使用中获益。当我点击下面这样的静态查询时,它给出了正确的结果数组SELECT*from post AS p,其中FIND_IN_SET('8','8')和(p.status=2)ORDER BY post_id DESC;但当使用下面这样的动态查询时,它无法正常工作,请选择*from post AS p,其中FIND_IN_SET('8',p.visible_user_id)和(p.status=2)ORDER BY post_id DESC;查询
SELECT FIND\u IN_SET('8','8')
对我来说很好,并返回
1
作为结果集。你一定是做错了什么。除了@TimBiegeleisen comment,
选择FIND_In_SET('b','b')返回0。因此,您可能应该查找一个经过修剪的字符串,甚至最好删除任何尾随的逗号。@SarathChandra是的,我怀疑
visible\u user\u id
字符串不好并且存在格式问题。正如Drew所提到的,如果可以的话,您应该尽量使事情规范化。花费了这么多时间,我认为是时候规范化您的数据库了。此外,您还可以从索引使用中获益。当我点击下面这样的静态查询时,它给出了正确的结果数组SELECT*from post AS p,其中FIND_IN_SET('8','8')和(p.status=2)ORDER BY post_id DESC;但当使用下面这样的动态查询时,它无法正常工作,请选择*from post AS p,其中FIND_IN_SET('8',p.visible_user_id)和(p.status=2)ORDER BY post_id DESC;